您好,欢迎来到九壹网。
搜索
您的当前位置:首页log4j

log4j

来源:九壹网
1 log4j

1.1 日志级别

1.2 配置文件

 记录器

例如:log4j.rootLogger=info, stdout 输出源:

确定输出位置:例如文件、控制台等 格式:log4j.appender.源名称 = 实现类 实现类是log4j规定的,常用的如下所示的两个

例如:log4j.appender.stdout=org.apache.log4j.ConsoleAppender

输出源属性

格式:log4j.appender.名称.属性=值

例如:log4j.appender.stdout.Target=System.out

System.out输出的是黑色文字信息,System.err输出的是红色文字信息

 布局

格式:log4j.appender.源名称.layout=实现类

例如:log4j.appender.stdout.layout=org.apache.log4j.PatternLayout(相当于固定值)

 布局风格 格式:log4j.appender.名称.layout.ConversionPattern=风格

例子 列出logger名字空log4j配置文件参数举例 输出显示媒介 间的全称,如果加上假设当前logger名字空间是“a.b.c” %c {<层数>}表示列出%c a.b.c 从最内层算起的指%c{2} b.c 定层数的名字空间 %20c (若名字空间长度小于20,则左边用参数 说明 %C %d %F %l %L %m %M %n %p %r %t %x %X 空格填充) (若名字空间长度小于20,则右边用%-20c 空格填充) (若名字空间长度超过30,截去多余%.30c 字符) (若名字空间长度小于20,则左边用%20.30c 空格填充;若名字空间长度超过30,截去多余字符) (若名字空间长度小于20,则右边用%-20.30c 空格填充;若名字空间长度超过30,截去多余字符) 列出调用logger的假设当前类是“org.apache.xyz.SomeClass” 类的全名(包含包路%C org.apache.xyz.SomeClass 径) %C{2} xyz.SomeClass 2005/10/12 22:23:30,117 显示日志记录时间,%d{yyyy/MM/ddHH:mm:ss,SSS} 22:23:30,117 {<日期格式>}使用%d{ABSOLUTE} ISO8601定义的日期%d{DATE} 12 Oct 2005 22:23:30,117 格式 %d{ISO8601} 2005-10-12 22:23:30,117 显示调用logger的%F MyClass.java 源文件名 输出日志事件的发生位置,包括类目%l MyClass.main(MyClass.java:129) 名、发生的线程,以及在代码中的行数 显示调用logger的%L 129 代码行 显示输出消息 %m This is a message for debug. 显示调用logger的%M main 方法名 当前平台下的换行Windows平台下表示rn %n 符 UNIX平台下表示n 显示该条日志的优%p INFO 先级 显示从程序启动时到记录该条日志时%r 1215 已经经过的毫秒数 输出产生该日志事%t MyClass 件的线程名 假设某程序调用顺序是MyApp调用com.foo.Bar 按NDC(Nested Diagnostic MyApp - Call com.foo.Bar. Context,线程堆栈)%c %x - %m%n com.foo.Bar - Log in Bar 顺序输出日志 MyApp - Return to MyApp. 按MDC(Mapped Diagnostic %X{5} (记录代号为5的客户端的日志) Context,线程映射表)输出日志。通常用于多个客户端连接同一台服务器,方便服务器区分是那个客户端访问留下来的日志。 %% 显示一个百分号 %%

% 1.3 web项目

1.把log4j.jar放到lib下就会自动加载寻找log4j.properties文件

ava虚拟机加载log4j的类(LogManager.class)后,执行静态代码块,这个类中的静态代码块,会load log4j的配置文件,依次加载log4j.xml,log4j.properties

部分代码:

Hierarchy h = new Hierarchy(new RootLogger((Level) Level.DEBUG)); repositorySelector = new DefaultRepositorySelector(h);

/** Search for the properties file log4j.properties in the CLASSPATH. */

String override =OptionConverter.getSystemProperty(DEFAULT_INIT_OVERRIDE_KEY,null); static public final String DEFAULT_CONFIGURATION_FILE = \"log4j.properties\"; static final String DEFAULT_XML_CONFIGURATION_FILE = \"log4j.xml\"; if(configurationOptionStr == null) {

url = Loader.getResource(DEFAULT_XML_CONFIGURATION_FILE); if(url == null) {

url = Loader.getResource(DEFAULT_CONFIGURATION_FILE);

}

获取系统属性,看是否用户设置了override。默认是不设置的。

如果确实没有设置,那么尝试找一下,有没有log4j.xml,有则加载。 如果还没有,那么尝试找一下,有没有log4j.properites,有则加载,

所以你把log4j.xml或log4j.properties放在这些目录下,那么log4j会“自动去加载”到,不用程序里手工写加载代码了。

2.log4j.properties 文件不会自动加载,需要手动加载

PropertyConfigurator.configure(配置文件);

String log4jPath = ApplicationDispatchServlet.class.getResource(\"/\").getPath() + \"config/logs\"; List files = FileUtil.listFile(new File(log4jPath), \"properties\

if ((files == null) || (files.size() == 0)){ log.info(\"没有发现Log4j配置文件.\"); return; }

for (File file : files) { //加载配置文件

PropertyConfigurator.configure(file.getPath());

}

log.info(\"加载Log4j配置文件完成.\");

3.web.xml中配置,spring通过org.springframework.web.util.WebAppRootListener这个来运行时的项目路径。 但是如果在web.xml中已经配置了 org.springframework.web.util.Log4jConfigListener这个,

则不需要配置WebAppRootListener了。因为Log4jConfigListener已经包含了WebAppRootListener的功能 一般配置类型下面的例子: org.springframework.web.util.Log4jConfigListener

log4jConfigLocation classpath:log4j.properties

log4jRefreshInterval 60000

如果有多个web应用,怕webapp.root变量重复,可以在context-param里定义webAppRootKey

webAppRootKey webapp.root

\"webapp.root\"这个字符串可以随便写任何字符串。如果不配置默认值是\"webapp.root\"。配置各自web应用的日志文件路径

可以用System.getProperty(\"webapp.root\")来动态获项目的运行路径。 一般返回结果例如:/usr/local/tomcat6/webapps/项目名

1.4 给指定的包设置级别

log4j.logger.com.foo=WARN

properties文件

#info级别,2个输出源(名字可以自定义),后面的属性与该名字保持一致即可 log4j.rootLogger=INFO,stdout,dailyFile #控制台输出 log4j.appender.stdout=org.apache.log4j.ConsoleAppender #布局 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout #风格格式 log4j.appender.stdout.layout.ConversionPattern=%d%p[%c]-%m%n # 每天产生一个日志文件(dailyFile) log4j.appender.dailyFile=org.apache.log4j.DailyRollingFileAppender #当天的日志文件全路径 log4j.appender.dailyFile.File=/home/bank/apache-tomcat-7.0.72/logs/fhzc-app-system.log #服务器启动日志是追加,false:服务器启动后会生成日志文件把老的覆盖掉 log4j.appender.dailyFile.Append=true #日志文件格式 log4j.appender.dailyFile.layout=org.apache.log4j.PatternLayout log4j.appender.dailyFile.layout.ConversionPattern=%-d{yyyy-MM-ddHH\\:mm\\:ss}[%c]-[%p][%t](%F\\:%L)->%m%n log4j.appender.dailyFile.Threshold=DEBUG #设置每天生成一个文件名后添加的名称,备份名称:年月日.log log4j.appender.dailyFile.DatePattern='.'yyyy-MM-dd'.log' #指定的包设置级别 log4j.logger.com.ibatis=ERROR log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=ERROR log4j.logger.com.ibatis.common.jdbc.ScriptRunner=ERROR log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=ERROR log4j.logger.java.sql.Connection=INFO log4j.logger.java.sql.Statement=INFO log4j.logger.java.sql.PreparedStatement=INFO log4j.logger.org.codehaus.jackson=INFO log4j.logger.org.codehaus=INFO log4j.logger.org.springframework = ERROR log4j.logger.org.mybatis=ERROR log4j.logger.org.springframework.web.bind.annotation=ERROR Xml文件配置

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务