log4j

appender :用于指定使用的append类

logger:定义logger的名称和其对应的appender

LoggerFactory.getLogger("counter"); //获取xml中定义的loggername为counter的logger对象

一个appender可以定义多个logger

appender :用于指定使用的append类

<appender name="sysAppender" class="com.java.example.log4j.log.B2RollingAppender">
<param name="DatePattern" value="'.'yyyyMMddHHmm" />
<param name="File" value="logs/run.log" />
<!-- 异步日志的开关 -->
<param name="BufferedIO" value="false" />
<param name="BufferSize" value="65535" />
<!-- 每逢20分钟生成一个日志文件 -->
<param name="intervalSeconds" value="1200" />
<param name="Threshold" value="DEBUG" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="[batchdeal-invoker]%d{yyyy-MM-dd HH:mm:ss}%p[%t]%C.%M(%L)|%m%n" />
</layout>
</appender>

logger:定义logger的名称和其对应的appender

 <logger name="counter" additivity="false">
<level value="INFO" />
<appender-ref ref="sysAppender" />
</logger>

LoggerFactory.getLogger("counter"); //获取xml中定义的loggername为counter的logger对象

---------------------------------------------------------------------------------------------------------------

<!-- log4j 系统日志-->
  注:本资料通过网络查找然后整理而成

首先要对配置文件的各个参数进行说明,这样才能合理的进行配置。

参数意义说明:

配置根Logger

  1. 其语法为:
  2. log4j.rootLogger = [ level ] , appenderName1, appenderName2, …
  3. level: 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或
  4. 者您定义的级别。Log4j建议只使用四个级别,优 先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定 义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。
  5. appenderName: 就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。
  6. 例如:log4j.rootLogger=info,A1,B2,C3

输出级别的种类

  1. OFF 、FATAL 、ERROR、WARN、INFO、DEBUG、TRACE 、ALL
  2. OFF 为最高等级 关闭了日志信息
  3. FATAL  为可能导致应用中止的严重事件错误
  4. ERROR 为严重错误 主要是程序的错误
  5. WARN 为一般警告,比如session丢失
  6. INFO 为一般要显示的信息,比如登录登出
  7. DEBUG 为程序的调试信息
  8. TRACE 为比DEBUG更细粒度的事件信息
  9. ALL 为最低等级,将打开所有级别的日志


配置日志信息输出目的地

  1. log4j.appender.appenderName = fully.qualified.name.of.appender.class
  2. 1.org.apache.log4j.ConsoleAppender(控制台)
  3. 2.org.apache.log4j.FileAppender(文件)
  4. 3.org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
  5. 4.org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
  6. 5.org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)


配置日志信息的格式

  1. log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
  2. 1.org.apache.log4j.HTMLLayout(以HTML表格形式布局),
  3. 2.org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
  4. 3.org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
  5. 4.org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)


  1. <strong>控制台选项</strong>
  2. Threshold=DEBUG:指定日志消息的输出最低层次。
  3. ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
  4. Target=System.err:默认情况下是:System.out,指定输出控制台
  5. <strong>FileAppender 选项</strong>
  6. Threshold=DEBUF:指定日志消息的输出最低层次。
  7. ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
  8. File=mylog.txt:指定消息输出到mylog.txt文件。
  9. Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
  10. <strong>RollingFileAppender 选项</strong>
  11. Threshold=DEBUG:指定日志消息的输出最低层次。
  12. ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
  13. File=mylog.txt:指定消息输出到mylog.txt文件。
  14. Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
  15. MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
  16. MaxBackupIndex=2:指定可以产生的滚动文件的最大数。
  17. log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n


日志信息格式中几个符号所代表的含义:

  1. -X号: X信息输出时左对齐;
  2. %p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
  3. %d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
  4. %r: 输出自应用启动到输出该log信息耗费的毫秒数
  5. %c: 输出日志信息所属的类目,通常就是所在类的全名
  6. %t: 输出产生该日志事件的线程名
  7. %l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main (TestLog4.java:10)
  8. %x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
  9. %%: 输出一个"%"字符
  10. %F: 输出日志消息产生时所在的文件名称
  11. %L: 输出代码中的行号
  12. %m: 输出代码中指定的消息,产生的日志具体信息
  13. %n: 输出一个回车换行符,Windows平台为"/r/n",Unix平台为"/n"输出日志信息换行
  14. 可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:
  15. 1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。
  16. 2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。
  17. 3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。
  18. 4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边较远输出的字符截掉。

log4j.xml配置如下,log4j.xml存放在WEB-INF目录下:

  1. <?xml version="1.0" encoding="GBK" ?>
  2. <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
  3. <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
  4. <!-- 输出日志到控制台  ConsoleAppender -->
  5. <appender name="console"
  6. class="org.apache.log4j.ConsoleAppender">
  7. <param name="Threshold" value="info"></param>
  8. <layout class="org.apache.log4j.TTCCLayout">
  9. <param name="ConversionPattern" value="TTCCLayout"></param>
  10. </layout>
  11. </appender>
  12. <!-- 输出日志到文件  每天一个文件 -->
  13. <appender name="dailyRollingFile"
  14. class="org.apache.log4j.DailyRollingFileAppender">
  15. <param name="Threshold" value="info"></param>
  16. <param name="ImmediateFlush" value="true"></param>
  17. <param name="File" value="c:/logs/dailyRollingFile.log"></param>
  18. <param name="DatePattern" value="'.'yyyy-MM-dd'.log'"></param>
  19. <layout class="org.apache.log4j.PatternLayout">
  20. <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss\} %-5p] [%t] {%c:%L}-%m%n"></param>
  21. </layout>
  22. </appender>
  23. <!-- 输出日志到文件  文件大小到达指定尺寸的时候产生一个新的文件 -->
  24. <appender name="railyFile"
  25. class="org.apache.log4j.RollingFileAppender">
  26. <param name="File" value="c:/logs/railyFile.log"></param>
  27. <param name="ImmediateFlush" value="true"/>
  28. <param name="Threshold" value="info"></param>
  29. <param name="Append" value="true"></param>
  30. <param name="MaxFileSize" value="30KB"></param>
  31. <param name="MaxBackupIndex" value="100"></param>
  32. <layout class="org.apache.log4j.PatternLayout">
  33. <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss\} %-5p] [%t] {%c:%L}-%m%n"></param>
  34. </layout>
  35. </appender>
  36. <!-- 输出日志到文件 -->
  37. <appender name="file"
  38. class="org.apache.log4j.FileAppender">
  39. <param name="File" value="c:/logs/file.log"></param>
  40. <param name="Threshold" value="info"></param>
  41. <layout class="org.apache.log4j.PatternLayout">
  42. <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss\} %-5p] [%t] {%c:%L}-%m%n"></param>
  43. </layout>
  44. </appender>
  45. <!--
  46. 定义全局的日志输出级别,但是在输出目的地的配置中配置的具体输出级别优先级高于全局定义的优先级。
  47. 如果在railyFile中定义<param name="Threshold" value="info"></param>,那么将会把info以上级别的信息输出
  48. -->
  49. <root>
  50. <priority value="debug" />
  51. <appender-ref ref="console" />
  52. <appender-ref ref="dailyRollingFile" />
  53. <appender-ref ref="railyFile" />
  54. <appender-ref ref="file" />
  55. </root>
  56. </log4j:configuration>

在web.xml中添加log4j.xml配置

  1. <!-- log4j 系统日志-->
  2. <context-param>
  3. <param-name>log4jConfigLocation</param-name>
  4. <param-value>/WEB-INF/log4j.xml</param-value>
  5. </context-param>
  6. <listener>
  7. <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  8. </listener>

对Logger的简单封装:

BasicConfigurator.configure();默认先读取log4j.xml,如果不存在则再读取log4j.properties.

  1. public class Log4jUtil {
  2. private static final String configFile = "log4j.xml";
  3. static{
  4. BasicConfigurator.configure();
  5. }
  6. public Log4jUtil() {
  7. super();
  8. }
  9. public static String getConfigFile(){
  10. return configFile;
  11. }
  12. public static Logger getLogger(Class clazz){
  13. return Logger.getLogger(clazz);
  14. }
  15. public static Logger getLogger(String strClass){
  16. return Logger.getLogger(strClass);
  17. }
  18. public static Logger getLogger(String strClass,LoggerFactory loggerFactory){
  19. return Logger.getLogger(strClass, loggerFactory);
  20. }
  21. }

最后只需在代码中调用即可,格式如下:

  1. public class HelloLog4j {
  2. private static Logger logger = Logger.getLogger(HelloLog4j.class);
  3. public  String getURL(){
  4. logger.info("getURL() ... ");
  5. return null;
  6. }
  7. }

这样log4j就配置成功了。

log4j配置说明的更多相关文章

  1. Log4j配置说明及样例

    一般的应用都会记录日志,Java圈里面用得最多就属log4j了,比较规范一点就是使用log4j.xml进行配置Log输出.这里就比较有疑问,多数情况是使用log4j.properties文件呐,前面也 ...

  2. Apache Log4j配置说明

    1.Log4j简介 Log4j是Apache的一个开源项目,它允许开发者以任意间隔输出日志信息.Log4j主要由三大类组件构成: 1)Logger-负责输出日志信息,并能够对日志信息进行分类筛选,即决 ...

  3. Android中使用Log4j及配置说明

    目前在进行Android开发时使用到了log4j,现在对其配置进行记录. 1. android-logging-log4j 下载地址 https://code.google.com/archive/p ...

  4. log4j的使用详细解析

    1 Log4j配置说明 1.1 配置文件Log4j可以通过java程序动态设置,该方式明显缺点是:如果需要修改日志输出级别等信息,则必须修改java文件,然后重新编译,很是麻烦: log4j也可以通过 ...

  5. commons-logging和log4j

    1.Apache通用日志接口(commons-logging.jar)介绍 Apache Commons包中的一个,包含了日志功能,必须使用的jar包.这个包本身包含了一个Simple Logger, ...

  6. Log4j使用教程 log4:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).

    1.Logger类 通过Logger类的静态方法Logger.getRootLogger得到RootLogger.所有其他的loggers是通过静态方法Logger.getLogger来实例化并获取的 ...

  7. Log4j配置全说明

    转载:http://zhangjunhd.blog.51cto.com/113473/21014/ 1.Log4j简介 Log4j是Apache的一个开源项目,它允许开发者以任意间隔输出日志信息.Lo ...

  8. Apache Log4j使用实例

    Apache Log4j使用实例  原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.  Blog:  1.Logger类 通过Logger类的静 ...

  9. commons-logging log4j的联系区别

    1.Apache通用日志接口(commons-logging.jar)介绍 Apache Commons包中的一个,包含了日志功能,必须使用的jar包.这个包本身包含了一个Simple Logger, ...

随机推荐

  1. sql server2008 检查是否需要挂起计算机重新启动。挂起重新启动会导致安装程序失败。

    解决方法: 1.如果重新启动后,一样无效, 2.那么就进入注册表编辑器,通过修改注册表的方法来解决.除了删除SQL安装时遗留下的LJ文件,还必须进行以下操作: 在"开始"-&quo ...

  2. linux中service *** start与直接运行/usr/bin/***的区别

    在linux想要运行启动一个服务有两种方法: 1,运行/etc/init.d/目录下的shell脚本,还可以有快捷方式,service *** start/ stop/restart /status, ...

  3. PHP网页显示乱码问题总结

    其实,乱码,都是因为编码不统一的问题导致的. 以UTF-8编码为例: 第一步,确定数据库字段的编码,字符集:urt8 第二部,PHP脚本设置编码:header('Content-Type: text/ ...

  4. Zedboard安装桌面系统ubuntu及opencv(1)

    最近一直在搞板子,想帮Zedboard安装一个opencv谁知道困难重重,而且网络几乎没有任何资料可以参考,只有陆佳华的<嵌入式软硬件协同设计实战指南>可以参考. 但是这本书讲得不清不楚, ...

  5. asp.net中如何防止用户重复点击提交按钮

    asp.net中如何防止用户重复点击提交按钮   asp.net 中防止因为网速慢等影响交互的问题导致用户可能点击多次提交按钮,从而导致数据库中出现多条重复的记录,经过亲自验证在网上找的方法,找到两个 ...

  6. 挖掘微信Web版通信的全过程 [转]

    昨天是周末,在家闲得无聊,于是去weiphone.com逛了一圈,偶然发现有人发了一帖叫<微信 for Mac>, 这勾起了我的好奇心,国内做Mac开发的人确实很少,对于那些能够独自开发一 ...

  7. Software Development Principle

    Every great piece of software begins with customer's big idea. As a professional softeware developer ...

  8. 使用的 SQL Server 版本不支持数据类型“datetime2”.

    错误原因,在使用ado.net entity的时候,entity使用的数据库是sqlserver 2008, 但后来实际使用中使用的数据库是sqlserver 2005, 使用的 SQL Server ...

  9. mac 下打开多个Eclipse

    在Mac下只能打开一个Eclipse工具. 使用下面命令,在控制台中输入,可以打开多个Eclipse. open -n xx/xx/eclipse.app 例子: open -n /Users/use ...

  10. MYSQL PERFORMANCE_SCHEMA HINTS

    ACCOUNTS NOT PROPERLY CLOSING CONNECTIONS [ 1 ] Works since 5.6 SELECT ess.user, ess.host , (a.total ...