jsp-log4j 日志 简单用法笔记
博客分类:
其它
1、从官方网站下载
jakarta-log4j-1.2.1.tar.gz http://logging.apache.org/log4j/1.2/download.html 2、在eclipse中将log4j-1.2.1.jar复制到WebContent/WEB-INF/lib 下 3、在src下新建File,命名为 log4j.properties(不要改动)
4、在log4j.properties中写入配置文件(从帮助文档中复制一段,具体配置查看其他信息) 如:
Xml代码
1. log4j.rootLogger=debug, stdout, R 2.
3. log4j.appender.stdout=org.apache.log4j.ConsoleAppender
4. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 5.
6. # Pattern to output the caller's file name and line number.
7. log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n 8.
9. log4j.appender.R=org.apache.log4j.RollingFileAppender 10.log4j.appender.R.File=D:/example.log 11.
12.log4j.appender.R.MaxFileSize=100KB 13.# Keep one backup file
14.log4j.appender.R.MaxBackupIndex=1 15.
16.log4j.appender.R.layout=org.apache.log4j.PatternLayout 17.log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
注:第7行可配置所生成日志文件位置
5、现在便可以使用了,如在某一个Servlet中使用:
Java代码
1. private static Logger loger=Logger.getLogger(AddServlet.class); //AddServlet.class为当前Servlet名 2.
3. loger.debug(\"用户使用了添加功能\"); 4. 5.
简介:
Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
Log4j配置:
第一步:加入log4j-1.2.8.jar到lib下。
第二步:在CLASSPATH下建立log4j.properties。内容如下:
#定义DEBUG优先级,R为日志输出目的的 log4j.rootLogger=DEBUG, R #设置日志输出类型,为文件类型
log4j.appender.R=org.apache.log4j.FileAppender #设置日志文件名my.log
log4j.appender.R.file=weather.log
#每次在文件尾写入新的日志信息 log4j.appender.R.Append=true #日志输出信息格式类型
log4j.appender.R.layout=org.apache.log4j.PatternLayout
#日志输出信息格式为 换行、换行、日期、优先级、[类名]、日志信息、换行
log4j.appender.R.layout.ConversionPattern=%n%n%d%p[%c]-%m%n
第三步:定义日志类Log.Java
package com.kyny.weather.log; import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator; /** * 日志类 * @author zhoucan * */ public class Log { //Logger实例
public Logger logger = null; //将Log类封装为单例模式 private static Log log;
//构造函数,用于初始化Logger配置需要的属性 private Log() { //获得当前目录路径 String
filePath=this.getClass().getResource(\"/\").getPath(); //找到log4j.properties配置文件所在的目录(已经创建好) filePath=filePath.substring(1).replace(\"bin\ //获得日志类logger的实例
logger=Logger.getLogger(this.getClass());
//logger所需的配置文件路径
PropertyConfigurator.configure(filePath+\"log4j.properties\"); } public static Log getLogger() {
if(log != null) return log; else return new Log(); } }
第四步:使用Log
Java代码:
Log log = Log.getLogger(); log.logger.error(\"XXX\
要写日志信息到一个文件中,必须使用org.apache.log4j.FileAppender。有以下FileAppender的配置参数:
FileAppender配置: 属性 描述 immediateFlush 标志的默认设置为true,这意味着输出流的文件被刷新,在每个追加操作 encoding threshold Filename fileAppend bufferedIO bufferSize 它可以使用任何字符编码。默认情况下是特定于平台的编码方案 这个 appender 阈值级别 日志文件的名称 默认设置为true,这意味着记录的信息被附加到同一文件的末尾 此标志表示是否需要写入缓存启用。默认设置为false 如果 bufferedI/O 启用,这表示缓冲区的大小,默认设置为8KB 下面是一个示例配置文件 log4j.properties 的 FileAppender。
# Define the root logger with appender file log4j.rootLogger = DEBUG, FILE
# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender # Set the name of the file
log4j.appender.FILE.File=${log}/log.out
# Set the immediate flush to true (default) log4j.appender.FILE.ImmediateFlush=true
# Set the threshold to debug mode log4j.appender.FILE.Threshold=debug
# Set the append to false, overwrite log4j.appender.FILE.Append=false
# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.conversionPattern=%m%n
如果喜欢相当于上述log4j.properties文件的XML配置文件,在这里是xml配置文件的内容:
可以尝试在 log4j - 示例程序 使用上面的配置。
日志记录到多个文件:
当想要写日志信息转化多个文件要求一样,例如,如果文件大小达到一定的阈值等。
写日志记录信息分成多个文件,必须扩展FileAppender类,并继承其所有属性useorg.apache.log4j.RollingFileAppender类。
有以下除了已如上所述为 FileAppender 可配置参数:
属性 maxFileSize 描述 上述的文件的回滚临界尺寸。默认值是10MB maxBackupIndex 此属性表示要创建的备份文件的数量。默认值是1 下面是一个示例配置文件log4j.properties的RollingFileAppender进行
# Define the root logger with appender file log4j.rootLogger = DEBUG, FILE
# Define the file appender
log4j.appender.FILE=org.apache.log4j.RollingFileAppender # Set the name of the file
log4j.appender.FILE.File=${log}/log.out
# Set the immediate flush to true (default) log4j.appender.FILE.ImmediateFlush=true
# Set the threshold to debug mode log4j.appender.FILE.Threshold=debug
# Set the append to false, should not overwrite log4j.appender.FILE.Append=true
# Set the maximum file size before rollover log4j.appender.FILE.MaxFileSize=5KB
# Set the the backup index
log4j.appender.FILE.MaxBackupIndex=2
# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.conversionPattern=%m%n
如果想有一个XML配置文件,可以生成中提到的初始段,并添加相关的 RollingFileAppender 进行唯一额外的参数。
此示例配置说明每个日志文件的最大允许大小为5MB。当超过最大尺寸,新的日志文件将被创建并因为maxBackupIndex被定义为2,当第二个日志文件达到最大值,第一个日志文件将被删除,之后所有的日志信息将被回滚到第一个日志文件。
可以尝试 log4j - 示例程序使用上面的配置。
每天生成日志文件:
当想生成每一天的日志文件,以保持日志记录信息的良好记录。
日志记录信息纳入日常的基础文件,就必须它扩展FileAppender类,并继承其所有属性useorg.apache.log4j.DailyRollingFileAppender类。
有除了已如上所述为 FileAppender 只有一个重要的下列配置参数:
Property 描述 DatePattern 这表示在滚动的文件,并按命名惯例来执行。默认情况下,在每天午夜滚动 DatePattern控制使用下列滚动的时间表方式之一:
DatePattern '.' yyyy-MM '.' yyyy-MM-dd '.' yyyy-MM-dd-a '.' yyyy-MM-dd-HH 描述 滚动在每个月的结束和下一个月初 这是默认值,每天午夜滚动 滚动每一天的午夜和中午 滚动在每一个小时 '.' yyyy-MM-dd-HH-mm 滚动在每一个分钟 '.' yyyy-ww 滚动每个星期取决于区域设置时的第一天 下面是一个示例配置文件log4j.properties生成日志文件滚动的在每天午夜。
# Define the root logger with appender file log4j.rootLogger = DEBUG, FILE
# Define the file appender
log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender # Set the name of the file
log4j.appender.FILE.File=${log}/log.out
# Set the immediate flush to true (default) log4j.appender.FILE.ImmediateFlush=true
# Set the threshold to debug mode log4j.appender.FILE.Threshold=debug
# Set the append to false, should not overwrite log4j.appender.FILE.Append=true
# Set the DatePattern
log4j.appender.FILE.DatePattern='.' yyyy-MM-dd-a
# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.conversionPattern=%m%n
如果想使用XML配置文件,可以生成中提到的初始段,并添加相关DailyRollingFileAppender 唯一的额外参数和数据。 可以尝试在 log4j - 示例程序使用上面的配置。
前面我们已经看到了如何创建一个配置文件。本教程将讲解如何生成调试信息和日志在一个简单的文本文件。
下面是我们的例子中创建了一个简单的配置文件。这里再重复一次:
下载最新的Log4j库:http://logging.apache.org/log4j/2.x/download.html
根记录器的级别定义为DEBUG并连接appender命名为FILE。
appender FILE文件被定义为 org.apache.log4j.FileAppender 并写入到一个名为“log.out”位于 log 目录下。
定义的布局模式是 %m%n,这意味着打印日志消息之后自动加上一个换行符。
所以 log4j.properties 文件的内容如下:
# Define the root logger with appender file log = /usr/home/log4j
log4j.rootLogger = DEBUG, FILE
# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender log4j.appender.FILE.File=${log}/log.out
# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.conversionPattern=%m%n
在Java程序中使用log4j:
下面的Java类是一个非常简单的例子,Java应用程序初始化,然后使用Log4J日志库。
import org.apache.log4j.Logger;
import java.io.*;
import java.sql.SQLException; import java.util.*;
public class log4jExample{
/* Get actual class name to be printed on */ static Logger log = Logger.getLogger(
log4jExample.class.getName());
public static void main(String[] args) throws IOException,SQLException{
log.debug(\"Hello this is an debug message\"); log.info(\"Hello this is an info message\"); } }
编译和运行:
下面是步骤编译并运行上述程序。确保在进行编译和执行之前,适当地设置PATH和CLASSPATH。
所有的库应该在 CLASSPATH 和 log4j.properties 文件应该在PATH可用。所以,做到以下几点:
创建log4j.properties如上图所示。
创建log4jExample.java如上图所示,并对其进行编译。 执行log4jExample二进制运行程序。
在里面 /usr/home/log4j/log.out 文件会得到下面的结果:
Hello this is an debug message Hello this is an info message