关于java log框架

log4j:最传统的log框架,核心概念 Logger appender layout

commons-log:避免库实现者限制使用者的log实现,实现动态log绑定

slf4j:动态绑定有时会失败,或者不可控,slf4j使用静态绑定

logback:增强版的log4j,提供 配置扫描更新、占位符、运行时过滤器、处理IO异常……等功能

 

 

目前最佳搭配:slf4j logback

 

slf4j实现方式:org.slf4j.impl.StaticLoggerBinder由集成方实现

 

某个配置例子logback.xml

扫描二维码关注公众号,回复: 895344 查看本文章

<?xml version="1.0" encoding="UTF-8"?>

<configuration debug="true" scan="true" scanPeriod="10 seconds">

<property name="APP_NAME" value="weitm-common" />

<property name="LOG_HOME" value="D:/workspace/common/log" />

<!--格式化输出:%d表示日期 {}中的格式满足java.text.SimpleDateFormat ,

%thread表示线程名,%-5level:级别从左显示5个字符宽度 的log等级  %msg:日志消息,%n是换行符 

%logger{50} logger的名字,

%caller{3} 调用栈  

%method 方法名 

%line 行号

%relative 从应用开始到现在的相对时间(毫秒)

%xException 调用栈

property{key}

() 是分组

"%black", "%red", "%green","%yellow","%blue", "%magenta","%cyan", "%white", "%gray", "%boldRed","%boldGreen", "%boldYellow", "%boldBlue", "%boldMagenta""%boldCyan", "%boldWhite" and "%highlight"

-->

<property name="PATTERN" value="%-32(%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread]) %-5level %logger{50}::%method:%line |%msg%n" />

<property name="DETAIL_PATTERN" value="%-32(%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %relative) %-5level %logger{50}::%method:%line %n%caller%msg%n %xException %n" />

<contextName>${APP_NAME}</contextName>

<!-- 控制台输出 -->

<appender name="console" class="ch.qos.logback.core.ConsoleAppender">

<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">

<pattern>${DETAIL_PATTERN}</pattern>

</encoder>

</appender>

<!-- 按照每天生成日志文件 -->

<appender name="file"

class="ch.qos.logback.core.rolling.RollingFileAppender">

<filter class="ch.qos.logback.classic.filter.ThresholdFilter">

<level>DEBUG</level>

</filter>

<append>true</append>

<file>${LOG_HOME}/${APP_NAME}.log</file>

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

<!--日志文件输出的文件名 -->

<FileNamePattern>${LOG_HOME}/${APP_NAME}.%d{yyyy-MM-dd}.log

</FileNamePattern>

<!--日志文件保留天数 -->

<MaxHistory>30</MaxHistory>

</rollingPolicy>

<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">

<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->

<pattern>${PATTERN}</pattern>

</encoder>

<!--日志文件最大的大小 -->

<triggeringPolicy

class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">

<MaxFileSize>1024MB</MaxFileSize>

</triggeringPolicy>

</appender>

<!-- show parameters for hibernate sql 专为 Hibernate 定制 -->

<logger name="org.hibernate.type.descriptor.sql.BasicBinder"

level="TRACE" />

<logger name="org.hibernate.type.descriptor.sql.BasicExtractor"

level="DEBUG" />

<logger name="org.hibernate.SQL" level="DEBUG" />

<logger name="org.hibernate.engine.QueryParameters" level="DEBUG" />

<logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG" />

<!--myibatis log configure -->

<logger name="com.apache.ibatis" level="TRACE" />

<logger name="java.sql.Connection" level="DEBUG" />

<logger name="java.sql.Statement" level="DEBUG" />

<logger name="java.sql.PreparedStatement" level="DEBUG" />

<root level="DEBUG">

<appender-ref ref="console" />

<appender-ref ref="file" />

<!-- <appender-ref ref="DEBUG"/> -->

</root>

</configuration>

 

猜你喜欢

转载自eric-weitm.iteye.com/blog/2422960
今日推荐