slf4j 和 log4j合用的(Maven)配置
来源:互联网 发布:淘宝买家秀怎么发微淘 编辑:程序博客网 时间:2024/04/30 18:27
slf4j 和 log4j合用的(Maven)配置
1.简述:
添加logger的日志输出,下面是配置信息供备忘步骤:
1. 在Maven的porn.xml 文件中添加dependency如下
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.2</version> </dependency>
之后就会添加三个包,
2. 之后在项目下添加log4j.properties
项目路径如下:
log4j.properties
#config root loggerlog4j.rootLogger = INFO,system.outlog4j.appender.system.out=org.apache.log4j.ConsoleAppenderlog4j.appender.system.out.layout=org.apache.log4j.PatternLayoutlog4j.appender.system.out.layout.ConversionPattern=MINAServer Logger-->%5p{%F:%L}-%m%n#config this Project.file loggerlog4j.logger.thisProject.file=INFO,thisProject.file.outlog4j.appender.thisProject.file.out=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.thisProject.file.out.File=logContentFile.loglog4j.appender.thisProject.file.out.layout=org.apache.log4j.PatternLayout
3. 在代码中添加
import java.text.SimpleDateFormat;import java.util.Date;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class LoggerTest { private static final Logger logger=LoggerFactory.getLogger(LoggerTest.class); public static void main(String[] args) { logger.info("Now:{}",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); }}
输出:2014-12-09 09:18:09,480 INFO [LoggerTest][main] Now:2014-12-09 09:18:09
如果要输出logger文件:
log4j.rootLogger=INFO,R,stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=Logger-->%5p{%F:%L}-%m%n log4j.appender.R=org.apache.log4j.DailyRollingFileAppender log4j.appender.R.File=../logs/loglog4j.appender.R.layout=org.apache.log4j.PatternLayoutlog4j.appender.R.layout.ConversionPattern=Logger-->%5p{%F:%L}-%m%n
2.下面是log4j.properties的配置信息
#输出格式
#%m 输出代码中指定的消息
#%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
#%r 输出自应用启动到输出该log信息耗费的毫秒数
#%c 输出所属的类目,通常就是所在类的全名
#%t 输出产生该日志事件的线程名
#%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
#%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
#%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
格式化例子:
log4j.appender.thisProject.file.out.layout.ConversionPattern=log4j-->%d{yyyy MMM dd HH:mm:ss,SSS}%5p{%F\:%L}-%m%n
注意:
1.信息格式化的小知识
这些参数中间可能会参杂一些数字比如:%5p它的意思就是在输出此参数之前加入多少个空格,还有就是里面的“\”的作用是转义字符
2.log4j.properties文件放置位置
(1)在java project项目中,它放置的位置是在项目的根目录下而不是在项目的src目录下。
(2)在javaweb项目中它放置的位置是在src目录下,因为这个时候tomcat会去默认的加载它的,不需要我们去手动的加载log4j的配置文件,只需要根据配置获取自己需要的logger实例即可,由此我们可以知道如果我们使用的不是tomcat容器的话,是不是需要自己手动加载或者至少要配置一下呢?比如使用Websphere等非apache服务器。
3.对于java web项目里面的日志的位置配置
(1)如果是要指定日志文件的位置为D盘下的log.txt文件。
log4j.appender.thisProject.file.out.File=d:\\log.txt
(2)如果指定日志文件的位置为当前的tomcat的工作目录下的某个文件
log4j.appender.thisProject.file.out.File=${catalina.home}/logs/logs_tomcat.log
4.log4j的加载机制
log4j.properties加载机制?其实log4j.properties只是log4j的配置文件。程序启动时,log4j组件去读log4j.properties,和读取普通配置文件没多大区别。获取用户配置的一些log4j的属性值,调用想应该的方法为log4j属性设置。
把log4j.properties当作一个struts.xml或者一个hibernate-cfg.xml就可以了。但不同的是,log4j不像struts和hibernate,它不是一个独立的组件,没法自己完成初始化,一般都是什么组件需要它 就去初始化。比如,hibernate默认的日志组件就是log4j,在hibernate初始化的时候它会去初始化log4j。如果你没配置log4j.properties,hibernate会抛出异常,但还是可以正常初始化。
Log4j说明
3 日志系统配置说明
3.1 输出级别的种类
- ERROR 为严重错误 主要是程序的错误
- WARN 为一般警告,比如session丢失
- INFO 为一般要显示的信息,比如登录登出
- DEBUG 为程序的调试信息
3.2 配置日志信息输出目的地
log4j.appender.appenderName=??
- org.apache.log4j.ConsoleAppender(控制台)
- org.apache.log4j.FileAppender(文件)
- org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
- org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
- org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
3.3 配置日志信息的格式
log4j.appender.appenderName.layout = ??
- org.apache.log4j.HTMLLayout(以HTML表格形式布局)
- org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
- org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
- org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
3.4 ConsoleAppender选项
Threshold=DEBUG:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
Target=System.err:默认情况下是System.out,指定输出控制台
3.5 FileAppender 选项
Threshold=DEBUG:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
3.6 RollingFileAppender 选项
Threshold=DEBUG:指定日志消息的输出最低层次。
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
File=mylog.txt:指定消息输出到mylog.txt文件。
Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
MaxBackupIndex=2:指定可以产生的滚动文件的最大数。
3.7 日志信息格式中几个符号所代表的含义
-X号: X信息输出时左对齐;
%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%r: 输出自应用启动到输出该log信息耗费的毫秒数
%c: 输出日志信息所属的类目,通常就是所在类的全名
%t: 输出产生该日志事件的线程名
%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main (TestLog4.java:10)
%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像Java servlets这样的多客户多线程的应用中。
%%: 输出一个”%”字符
%F: 输出日志消息产生时所在的文件名称
%L: 输出代码中的行号
%m: 输出代码中指定的消息,产生的日志具体信息
%n: 输出一个回车换行符,Windows平台为”\r\n”,Unix平台为”\n”输出日志信息换行
一个示例配置文件
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- slf4j 和 log4j合用的(Maven)配置
- slf4j 和 log4j合用的(Maven)配置
- slf4j 和 log4j合用的(Maven)配置
- slf4j 和 log4j合用的(Maven)配置
- slf4j 和 log4j合用的(Maven)配置
- slf4j 和 log4j合用的(Maven)配置
- slf4j 和 log4j合用的(Maven)配置
- slf4j 和 log4j合用的(Maven)配置
- slf4j 和 log4j合用的(Maven)配置
- slf4j 和 log4j合用的(Maven)配置
- slf4j 和 log4j合用的(Maven)配置
- slf4j 和 log4j合用的(Maven)配置
- slf4j 和 log4j合用的(Maven)配置
- Java日志 - slf4j和log4j合用的配置(Maven)
- log4j + slf4j的maven配置
- slf4j和log4j配置
- slf4j和log4j配置
- slf4j和log4j配置
- C++的头文件和实现文件分别写什么
- 集成新浪微博分享混淆
- js基础 one
- List<?>和List<T>的区别?即类型参数“<T>”和无界通配符“<?>”的区别
- 哈哈,我的博客竟然会有粉丝
- slf4j 和 log4j合用的(Maven)配置
- 获取二叉树叶子节点个数的递归及非递归算法
- 选拔赛之dp
- QPallete
- Mac: Alias[设置命令的别名]
- Android hander实现异步线程队列化
- 数据库基础知识_1
- memcached的深度解析
- node命令