LogBack简易教程
http://www.cnblogs.com/mailingfeng/p/3499436.html
1.简介
LogBack是一个日志框架,它与Log4j可以说是同出一源,都出自Ceki Gülcü之手。(log4j的原型是早前由Ceki Gülcü贡献给Apache基金会的)
1.1 LogBack,Slf4j,Log4j之间的关系
Slf4j是The Simple Logging Facade for Java的简称,是一个简单日志门面抽象框架,它本身只提供了日志Facade API和一个简单的日志类实现,一般常配合Log4j,LogBack,java.util.logging使用。Slf4j作为应用层的Log接入时,程序可以根据实际应用场景动态调整底层的日志实现框架(Log4j/LogBack/JdkLog...);
LogBack和Log4j都是开源日记工具库,LogBack是Log4j的改良版本,比Log4j拥有更多的特性,同时也带来很大性能提升。详细数据可参照下面地址:Reasons to prefer logback over log4j
LogBack官方建议配合Slf4j使用,这样可以灵活地替换底层日志框架。
(note: 为了优化log4j,以及更大性能的提升,Apache基金会已经着手开发了log4j 2.0, 其中也借鉴和吸收了logback的一些先进特性,目前log4j2还处于beta阶段)
1.2 LogBack的结构
LogBack被分为3个组件,logback-core, logback-classic 和 logback-access.
其中logback-core提供了LogBack的核心功能,是另外两个组件的基础。
logback-classic则实现了Slf4j的API,所以当想配合Slf4j使用时,需要将logback-classic加入classpath.
logback-access是为了集成Servlet环境而准备的,可提供HTTP-access的日志接口;
2. Slf4j+Logback的快速实践
2.1 资源准备
现在常用的是将slf4j+Logback进行配套使用,所以需要将slf4j-api.jar, logback-core.jar, log-classic.jar加入classpath.
之后编写logback.xml配置文件,同样该文件要加入classpath中,这样LogBack启动的时候会自动扫描到并加载。
(note: 若LogBack无法检索到相关的配置文件,则会启用默认配置,将日志按照默认格式输出于控制台)
2.2 logback.xml配置
LogBack的配置大概包括3部分,Appender,Logger,Root的配置。
下面通过一个配置文件的示例来快速了解logback的配置:
<?xml version="1.0" encoding="UTF-8"?> <configuration debug="true" scan="true" scanPeriod="30 seconds"> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <!-- encoders are by default assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder --> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%level] - %m%n</pattern> <!-- 常用的Pattern变量,大家可打开该pattern进行输出观察 --> <!-- <pattern> %d{yyyy-MM-dd HH:mm:ss} [%level] - %msg%n Logger: %logger Class: %class File: %file Caller: %caller Line: %line Message: %m Method: %M Relative: %relative Thread: %thread Exception: %ex xException: %xEx nopException: %nopex rException: %rEx Marker: %marker %n </pattern> --> </encoder> </appender> <!-- 按日期区分的滚动日志 --> <appender name="ERROR-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>logs/error.log</file> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%class:%line] - %m%n</pattern> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- daily rollover --> <fileNamePattern>error.%d{yyyy-MM-dd}.log.zip</fileNamePattern> <!-- keep 30 days' worth of history --> <maxHistory>30</maxHistory> </rollingPolicy> </appender> <!-- 按文件大小区分的滚动日志 --> <appender name="INFO-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>logs/info.log</file> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%class:%line] - %m%n</pattern> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <fileNamePattern>info.%i.log</fileNamePattern> <minIndex>1</minIndex> <maxIndex>3</maxIndex> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>5MB</maxFileSize> </triggeringPolicy> </appender> <!-- 按日期和大小区分的滚动日志 --> <appender name="DEBUG-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>logs/debug.log</file> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%class:%line] - %m%n</pattern> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>DEBUG</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- rollover daily --> <fileNamePattern>debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- or whenever the file size reaches 100MB --> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> </appender> <!-- 级别阀值过滤 --> <appender name="SUM-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>logs/sum.log</file> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%class:%line] - %m%n</pattern> </encoder> <!-- deny all events with a level below INFO, that is TRACE and DEBUG --> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- rollover daily --> <fileNamePattern>debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- or whenever the file size reaches 100MB --> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> </appender> <root level="debug"> <appender-ref ref="STDOUT" /> <appender-ref ref="ERROR-OUT" /> <appender-ref ref="INFO-OUT" /> <appender-ref ref="DEBUG-OUT" /> <appender-ref ref="SUM-OUT" /> </root> </configuration>
另一个更简单的:
2.3 示例
public class Slf4jTest { private static Logger Log = LoggerFactory.getLogger(Slf4jTest.class); @Test public void testLogBack(){ Log.debug("Test the MessageFormat for {} to {} endTo {}", 1,2,3); Log.info("Test the MessageFormat for {} to {} endTo {}", 1,2,3); Log.error("Test the MessageFormat for {} to {} endTo {}", 1,2,3); try{ throw new IllegalStateException("try to throw an Exception"); }catch(Exception e){ Log.error(e.getMessage(),e); } } }
相关推荐
logback-kafka-appender 该追加程序使您的应用程序可以将其应用程序日志直接发布到... < artifactId>logback-kafka-appender</ artifactId> < version>0.2.0</ version> < scope>runtime</ scope> </ dependenc
<groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <!-- <scope>provided</scope> --> </dependency> 另外需要去掉依赖: <dependency> <groupId>org....
正在安装###从Maven2存储库安装jar配置pom.xml: <dependencies> <dependency> <groupId>com.sndyuk</groupId> <artifactId>logback-fluentd-appender</artifactId> <version>1.1.0</version> </dependency></...
引用步骤: 1.基于SpringBoot自动装配,引用jar包即可,坐标如下: <dependency> ...<Pattern>[%date{yyyy-MM-dd HH:mm:ss.SSS}] [%X{traceId}] [%thread] %-5level %logger{80} %line - %msg%n</Pattern>
<param-value>/WEB-INF/conf/logback.xml</param-value> </context-param> <listener> <listener-class>ch.qos.logback.ext.spring.web.LogbackConfigListener</listener-class> </listener> 即可加载logback...
下载工件释放: Maven:< dependency> < groupId>com.themodernway</ groupId> < artifactId>logback-json-jackson</ artifactId> < version>2.0.1-RELEASE</ version></ dependency> Gradle: dependencies { ...
< artifactId>logback-redis-appender</ artifactId> < version>1.1.6</ version> </ dependency> 可配置选项 与Redis相关(RedisAppender属性) 键:(必需)Redis键,用于将日志附加到 host :(可选,默认值:...
回送小服务程序 Servlet for Logback在运行时配置日志级别。 特征 在运行时更改每个记录器的Logback级别 从初始logback.xml将级别重置为其默认值 ... < servlet>logback</ servlet> < servlet-cl
INFLUXDB-LOGBACK 用于 Logback 的 InfluxDB Appender ... <groupId>org.labaix.logback</groupId> <artifactId>influxdb-logback</artifactId> <version>0.42</version> </dependency> ... </depen
版本 <properties> <!-- 设置版本和字符集 --> ... <logback.version>1.1.7</logback.version> <mysql.version>8.0.18</mysql.version> <mybatis.version>3.4.5</mybatis.version> </properties>
重新登录Elasticsearch Appender 将日志事件直接从Logback发送到Elasticsearch。 日志是异步传递的(即... 在您的pom.xml (或等效文件)中,添加: <dependency> <groupId>com.internetitem</groupId> <artifactId>lo
rar包中包括:logback源代码,以及struts2的基础的页面跳转,...<prudent>true</prudent>默认为false,如果是 true,日志会被安全的写入文件,即使其他的FileAppender也在向此文件做写入操作,效率低,默认是 false。
< artifactId>stackify-log-logback</ artifactId> < version>4.0.1</ version> < scope>runtime</ scope> </ dependency> 用法 附加程序配置示例: < appender xss=removed xss=removed> < a
< bufferSize>1000</ bufferSize> < threadCount>20</ threadCount> < endpoint>kinesis.us-east-1.amazonaws.com</ endpoint> <!-- Specify endpoint OR region --> < region>us-east-1</ reg
现在很流行springboot的开发,小编闲来无事... <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</g
<groupId>com.sumologic.plugins.logback</groupId> <artifactId>sumologic-logback-appender</artifactId> <version>1.5</version> </dependency> 用法 在Sumo Logic中设置HTTP托管收集器源 请按照以下说明在...
</p><p> </p><p>BudWk(原名 NutzWk)运行环境:</p><p>JDK 8 181 + 或 OpenJDK 11 +</p><p>Redis 4.0.8 +</p><p>MySql 5.7 + 或 MariaDB、Oracle、SqlServer、达梦等</p><p>Zookeeper 3.4.13 +</p><p> </p><p>BudWk...
Maven软件包通过发布 享受,格雷·沃森Maven配置< dependencies>< dependency>< groupId>com.j256.cloudwatchlogbackappender</ groupId>< artifactId>cloudwatchlogbackappender</ artifactId><!-- NOTE: ...
使用日志进行编码的 Appender,并通过 TCP 将结果发送到远程主机。 为什么不使用普通的 SocketAppender?... < artifactId>socket-encoder-appender</ artifactId> < version>0.1beta1</ version> </ dep
< groupId>biz.paluch.logging</ groupId> < artifactId>logstash-gelf</ artifactId> < version>x.y.z</ version> </ dependency> 从Maven Central直接下载 JBoss AS / WildFly模块下载: < dependency> < ...