slf4j使⽤log4j的配置参数⽅式
⽬录
slf4j使⽤log4j的配置参数
slf4j 的 maven 配置如下
关于具体的配置 log4j.properties
⽇志级别
常⽤的输出位置
格式化输出
slf4j集成log4j⼩结
⽇志配置使⽤ Slf4j集成 log4j
为什么使⽤slf4j
slf4j集成log4j所需jar包及maven配置
slf4j及log4j配置⽂件
slf4j集成log4j
slf4j使⽤log4j的配置参数
slf4j,即简单⽇志门⾯(Simple Logging Facade for Java),不是具体的⽇志解决⽅案,它只服务于各种各样的⽇志系统。按照官⽅的说法,SLF4J是⼀个⽤于⽇志系统的简单Facade,允许最终⽤户在部署其应⽤时使⽤其所希望的⽇志系统。
⽐如⽤户可以⾃⼰选择使⽤ log4j 或是 log4j2 。
slf4j 的 maven 配置如下
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
</dependency>
关于具体的配置 log4j.properties
### 设置rootLogger ###
### 输出信息到控制台 ###
### 控制台输出
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
### 默认是system.out,如果是红⾊提⽰
log4j.appender.stdout.Target = System.out
### 布局格式,可以灵活指定
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
### 消息格式化
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
### 输出INFO 级别以上的⽇志到=D://logs/error.log ###
### 以每天⼀个⽂件输出⽇志
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
### 输出⽂件⽬录
log4j.appender.D.File = D://logs/log.log
### 消息增加到指定的⽂件中,false表⽰覆盖指定⽂件内容
log4j.appender.D.Append = true
### 输出信息最低级别log4j2 logger标签
log4j.appender.D.Threshold = INFO
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
### 输出ERROR 级别以上的⽇志到=D://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =D://logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
⽇志级别
主要有以下:
ERROR错误
WARN警告
INFO⼀般信息
DEBUG调试信息
常⽤的输出位置
ConsoleAppender控制台
FileAppender⽂件
DailyRollingFileAppender每天产⽣⼀个⽇志⽂件
RollingFileAppender⽂件⼤⼩达到指定尺⼨时产⽣⼀个新⽂件
WriterAppeder将⽇志信息以流格式发送到指定地⽅
格式化输出
-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: 输出代码中指定的消息,产⽣的⽇志具体信息
有时我们看到 %-5p 或者 %5p 意思就是输出⽇志级别时,左对齐或右对齐,4个字母的 INFO / WARN 要补⼀个空格,才能和DEBUG / ERROR 对齐格式。
slf4j集成log4j⼩结
⽇志配置使⽤ Slf4j集成 log4j
为什么使⽤slf4j
slf4j集成log4j所需jar包及maven配置
slf4j及log4j配置⽂件
slf4j集成log4j⽰例
为什么使⽤slf4j
SLF4J,即简单⽇志门⾯(Simple Logging Facade for Java),不是具体的⽇志解决⽅案,它只服务于各种各样的⽇志系统。按照官⽅的说法,SLF4J是⼀个⽤于⽇志系统的简单Facade,允许最终⽤户在部署其应⽤时使⽤其所希望的⽇志系统。通过⽰例说明该特性:
public class App {
final Logger logger = Logger(App.class);
private void test() {
logger.info("这是⼀条⽇志信息 - {}", "mafly");
}
public static void main(String[] args) {
App app = new App();
System.out.println("Hello World!");
}
}
对于不同的⽇志系统⽽⾔只需增加slf4j依赖包
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.22</version>
</dependency>
对于使⽤logback⽇志系统⽤户⽽⾔配置
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.9</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.9</version>
</dependency>
同时配置l的配置⽂件,即可使⽤slf4j管理⽇志系统,同时如果想要切换⽇志系统,例如想要切换到log4j,⽆需修改代码,只需将上述logback dependency删除,增加log4j的配置
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
可以实现不修改代码,更改⽇志系统的功能。
slf4j集成log4j所需jar包及maven配置
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
所需外部⽀持可分为三部分:slf4j-api包 log4j包以及slf4j-log4j12guanlainbao
slf4j及log4j配置⽂件
在 src/main/resources中 new–>resource bundle —->写⼊⽂件名 log4j ⽣成log4j.properties⽂件
### config root logger
配置根logger 格式为 [level],appenderName1,appenderName2……
其中[level]共分为5级,如下:
FATAL 0
ERROR 3
WARN 4
INFO 6
DEBUG 7
appendername是配置⽇志输出的⽬的地
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.Target=System.out
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n
其中appender的类型有如下⼏种:
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(⽂件),
org.apache.log4j.DailyRollingFileAppender(每天产⽣⼀个⽇志⽂件),
org.apache.log4j.RollingFileAppender(⽂件⼤⼩到达指定尺⼨的时候产⽣⼀个新的⽂件),
org.apache.log4j.WriterAppender(将⽇志信息以流格式发送到任意指定的地⽅)
输出格式layout有如下⼏种
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含⽇志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含⽇志产⽣的时间、线程、类别等等信息)
打印参数配置如下:
%m输出代码中指定的消息
%p输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r输出⾃应⽤启动到输出该log信息耗费的毫秒数
%c输出所属的类⽬,通常就是所在类的全名
%t输出产⽣该⽇志事件的线程名
%n输出⼀个回车换⾏符,Windows平台为“\r\n”,Unix平台为“\n”
%d输出⽇志时间点的⽇期或时间,默认格式为ISO8601,也可以在其后指定格式,⽐如:%d{yyy MMM dd HH:mm:ss , SSS},输出类似:2002年10⽉18⽇ 22 : 10 : 28 , 921
%l输出⽇志事件的发⽣位置,包括类⽬名、发⽣的线程,以及在代码中的⾏数。举例:Testlog4.main(TestLog4.java:
10 )
输出到⽂件中⽰例:
### 输出到⽇志⽂件 ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG ## 输出DEBUG级别以上的⽇志
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
slf4j集成log4j
约定⼤于配置,如果将log4j.properties放置在classpath中,即resources⽂件夹下可⾃动读取
private static  final Logger logger= Logger(TestUtil.class);
public static void main(String [] args){
logger.info("info信息");
logger.debug("debug信息");
}
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。