log4j-总结

声明:这是转载的,内容根据网络整理而成。

1-slf4j

为什么使用slf4j

SLF4J(Simple logging facade for Java)

SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。

sjf4j不是一个真正的日志实现,而是一个抽象层,它允许你在后台使用任意一个日志类库,相当于一个日志接口。

slf4j入口就是众多接口的集合,它不负责具体的日志实现,只在编译时负责寻找合适的日志系统进行绑定。具体有哪些接口,全部都定义在slf4j-api中。

总的来说,SLF4J使你的代码独立于任意一个特定的日志API,在代码中使用SLF4J写日志语句的主要出发点是使得你的程序独立于任意特定的日志类库。


调用过程

①首先系统包含slf4j-api作为日志接入的接口。compile时slf4j-api中public final class LoggerFactor类中private final static void bind()方法会寻找具体的日志实现类绑定,主要通过StaticLoggerBinder.getSingleton()的语句调用。
②slf4j-log4j12是链接slf4j-api和log4j中间的适配器。它实现了slf4j-apiz中StaticLoggerBinder接口,从而使得在编译时绑定的是slf4j-log4j12的getSingleton()方法。
③log4j是具体的日志系统。通过slf4j-log4j12初始化Log4j,达到最终日志的输出。


slffj引入log4j需要的jar包

  • slf4j-api-1.6.1.jar
  • log4j-1.2.16.jar
  • slf4j-log4j12-1.6.1.jar

2-log4j和spring MVC配合

需要在web.xml中指定log4j配置文件的位置

<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>/WEB-INF/log4j.properties</param-value>
</context-param>

<listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>


3-log4j.properties

### set log levels ###
log4j.rootLogger=warn, stdout, file, error

### 输出到控制台 ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p %c:%L - %m%n

### 输出到日志文件 ###
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=${catalina.home}/logs/detail.log
log4j.appender.file.Append=true
log4j.appender.file.Threshold=debug  ## 输出DEBUG级别以上的日志
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.S} %5p - %m  @ %l%n

### 保存异常信息到单独文件 ###
log4j.appender.error = org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.File = ${catalina.home}/logs/error.log ## 异常日志文件名
log4j.appender.error.Append = true
log4j.appender.error.Threshold = ERROR ## 只输出ERROR级别以上的日志!!!
log4j.appender.error.layout = org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss.S} %5p - %m  @ %l%n

### 指定包的日志级别 ###
log4j.logger.cn.demo.springIntercept=debug


4-Java文件


5-log4j配置文件参数详解

输出方式

org.apache.log4j.RollingFileAppender(滚动文件,自动记录最新日志)   
org.apache.log4j.ConsoleAppender (控制台)    
org.apache.log4j.FileAppender (文件)   
org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件)   
org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)

日志优先级别

FATAL ,ERROR ,WARN ,INFO ,DEBUG 五个级别

模式转换字符


格式修饰符



【输出】

2017-02-10 18:45:36.925  WARN - No mapping found for HTTP request with URI [/] in DispatcherServlet with name 'dispatcher'  @ org.springframework.web.servlet.DispatcherServlet.noHandlerFound(DispatcherServlet.java:1118)
2017-02-10 18:47:39.816 DEBUG - pre Interceptor---------------->  @ cn.demo.springIntercept.filter.MyInterceptor.preHandle(MyInterceptor.java:16)
2017-02-10 18:47:39.847 DEBUG - name--->mohino  @ cn.demo.springIntercept.action.HelloAction.hello(HelloAction.java:16)
2017-02-10 18:47:39.848 ERROR - Error===>java.lang.NumberFormatException: For input string: "mohino"  @ cn.demo.springIntercept.action.HelloAction.hello(HelloAction.java:22)
2017-02-10 18:47:39.849 DEBUG - str2Data-->0  @ cn.demo.springIntercept.action.HelloAction.hello(HelloAction.java:25)

【其他】

http://blog.csdn.net/kakaxi_77/article/details/7280182
Java日志管理:Logger.getLogger()和LogFactory.getLog()的区别(详解Log4j)

http://blog.csdn.net/azheng270/article/details/2173430/
配置Log4j(很详细)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值