http://blog.csdn.net/caolipeng_918/article/details/39210135
很多项目的日志使用logback+slf4j,从而替换了log4j日志的使用。。。。
使用所需的相关jar包:slf4j-api-1.6.0.jar,logback-core-1.0.6.jar,logback-classic-1.0.6.jar.
在程序中启用logback步骤:
1:配置logback环境,也即加载以上三个jar包(注意jar包版本的话需要匹配,否则会报jar包版本不匹配问题)----此时注意要是想打印日志到每个文件夹目录下面,需要配置logback.xml配置文件(其位置应该位于classpath下面)。
[popexizhi:
Mvn中添加相关依赖如下:
http://www.ixirong.com/2016/03/13/intro-to-java-log/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.6</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.6</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.18</version>
</dependency>
|
]
2:在每个需要之行记录的类里面,调用org.slf4j.LoggerFactory.getLogger()方法得到Logger对象.
3:调用Logger对象实例的打印方法,也即debug(),info(),warn(),error(),把记录输出到配置里面的各个appender(注意,此时打印日志的级别由logback.xml配置文件中
logback.xml配置文件如下:
- xml version="1.0" encoding="UTF-8"?>
- <configuration scan="true" scanPeriod="30 seconds">//scanPeriod 配置档配置文件改动时候自动更新时间
- <appender name="file"
- class="ch.qos.logback.core.rolling.RollingFileAppender">
- <file>logs/logback.log</file>//指定日志输出到硬盘的目录
- <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
- <fileNamePattern>logs/xxx.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
- </rollingPolicy>
- <layout class="ch.qos.logback.classic.PatternLayout">
- <span style="font-family:SimSun;">//打印日志输出的格式</span>
- <span style="font-family:SimSun;"> </span><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{80} -%msg%n</pattern>
- </layout>
- </appender>
- //设置Logger打印的等级 <span style="color:#FF6666;"></span>
- <root level="DEBUG">
- <appender-ref ref="file" /><span style="font-family:SimSun;">//与上面配置的appender name对应</span>
- </root>
- </configuration>
Logback.java 类如下
- package com.clark.logback;
-
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
-
- public class Logback {
-
- private static Logger logger = LoggerFactory.getLogger(Logback.class);
-
- public static void main(String[] args) {
- logger.info("-------start use logback--------");
-
- System.out.println("=====start======");
-
- System.out.println("=====end======");
-
- <span style="font-family:SimSun;"> </span> logger.info("-------end use logback--------");
- }
- }
之行main函数之后console台输出:
- 18:58:45,265 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
- 18:58:45,265 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
- 18:58:45,265 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/E:/Eclipse_Kepler_J2EE_Workspace/Logback/build/classes/logback.xml]
- 18:58:45,421 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
- 18:58:45,421 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Setting ReconfigureOnChangeFilter scanning period to 30 seconds
- 18:58:45,421 |-INFO in ReconfigureOnChangeFilter{invocationCounter=0} - Will scan for changes in [[E:\Eclipse_Kepler_J2EE_Workspace\Logback\build\classes\logback.xml]] every 30 seconds.
- 18:58:45,421 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Adding ReconfigureOnChangeFilter as a turbo filter
- 18:58:45,453 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender]
- 18:58:45,453 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [file]
- 18:58:45,578 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - Will use zip compression
- 18:58:45,578 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy - Will use the pattern logs/xxx.%d{yyyy-MM-dd}.log for the active file
- 18:58:45,593 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - The date pattern is 'yyyy-MM-dd' from file name pattern 'logs/xxx.%d{yyyy-MM-dd}.log.zip'.
- 18:58:45,593 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Roll-over at midnight.
- 18:58:45,593 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Setting initial period to Sun Sep 14 18:58:45 CST 2014
- 18:58:45,640 |-WARN in ch.qos.logback.core.rolling.RollingFileAppender[file] - This appender no longer admits a layout as a sub-component, set an encoder instead.
- 18:58:45,640 |-WARN in ch.qos.logback.core.rolling.RollingFileAppender[file] - To ensure compatibility, wrapping your layout in LayoutWrappingEncoder.
- 18:58:45,640 |-WARN in ch.qos.logback.core.rolling.RollingFileAppender[file] - See also http://logback.qos.ch/codes.html#layoutInsteadOfEncoder for details
- 18:58:45,640 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[file] - Active log file name: /logs/logback.log
- 18:58:45,640 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[file] - File property is set to [/logs/logback.log]
- 18:58:45,640 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to DEBUG
- 18:58:45,640 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [file] to Logger[ROOT]
- 18:58:45,656 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
- 18:58:45,656 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@22ed4b - Registering current configuration as safe fallback point
-
- =====start======
- =====end======
查看输出到本地的日志文件如下:
- 2014-09-14 18:58:45.671 [main] INFO com.clark.logback.Logback --------start use logback--------
- 2014-09-14 18:58:45.671 [main] INFO com.clark.logback.Logback --------end use logback--------
注意:
当我们项目中没有logback.xml配置打印日志文件的时候,会自动寻找配置文件logback.groovy,logback-test.xml(开发环境),logback.xml(生产环境).若是以上三个文件都找不到的话,会将相应的日志打印到console控制台.
[popexizhi:
这里的logback.xml所在文件夹要和配置到CLASSPATH中就可以,其他默认的还没有测试过。
]
参考博客:http://aub.iteye.com/blog/1103685
http://aub.iteye.com/blog/1101260
http://aub.iteye.com/blog/1110008
没有评论:
发表评论