logback日志垂直打印
来源:互联网 发布:竞猜源码 编辑:程序博客网 时间:2024/05/17 22:00
1、需要的jar包pom.xml
<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.1.3</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.3</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.7</version> </dependency>
2、创建一个java类LogBackExtDiscriminator.java,用于配置logback
package trade.base;import ch.qos.logback.classic.spi.ILoggingEvent;import ch.qos.logback.core.sift.AbstractDiscriminator;public class LogBackExtDiscriminator extends AbstractDiscriminator<ILoggingEvent> { private static final String KEY = "logFileName"; private String defaultValue; @Override public String getDiscriminatingValue(ILoggingEvent event) { String loggerName = event.getLoggerName(); if(loggerName==null){ return defaultValue; } return loggerName; } @Override public String getKey() { return KEY; } public String getDefaultValue() { return defaultValue; } public void setDefaultValue(String defaultValue) { this.defaultValue = defaultValue; }}
3、logback.xml配置文件代码
<?xml version="1.0" encoding="UTF-8"?><configuration debug="false"> <!-- 上下文名称 --> <contextName>umm-egate</contextName> <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径 --> <property name="LOG_HOME" value="logs/umm-egate" /> <!-- 读取配置文件 [log.name=aaa]--> <property resource="umm-log.properties" /> <appender name="logSiftAppender" class="ch.qos.logback.classic.sift.SiftingAppender"> <!-- <discriminator> <Key>logFileName</Key> <DefaultValue>test</DefaultValue> </discriminator> --> <discriminator class="trade.base.LogBackExtDiscriminator"> <defaultValue>test</defaultValue> </discriminator> <sift> <appender name="logRollingAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- [:-]设置默认值 --> <!-- <File>${LOG_HOME}/${log.name2:-xxx}-testA.log</File> --> <File>${LOG_HOME}/${logFileName:-logTest}.log</File> <encoder> <!--格式化输出,%d:日期;%thread:线程名;%-5level:级别,从左显示5个字符宽度;%msg:日志消息;%n:换行符 --> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>utf-8</charset> </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.TimeBasedRollingPolicy"> <!-- 日志文件输出的文件名 - 注意:加上%i--> <fileNamePattern>${LOG_HOME}/${logFileName}/${logFileName}.log.%i.%d{yyyy-MM-dd}</fileNamePattern> <!-- 日志文件保留天数(根据yyyy-MM-dd来确定单位是 天/月/年等) --> <maxHistory>30</maxHistory> <!--日志文件最大的大小 单位KB\MB\GB--> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>10MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> </appender> </sift> </appender> <!-- 控制台输出 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化输出,%d:日期;%thread:线程名;%-5level:级别,从左显示5个字符宽度;%msg:日志消息;%n:换行符 --> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> </encoder> </appender> <!--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" /> <!-- additivity="false" 只打印在 testA对应的日志文件中,注意:2个test是LoggerFactory.getLogger("testA")的名字 --> <logger name="test0" additivity="false" level="INFO" > <appender-ref ref="logSiftAppender"/> </logger> <!-- 日志输出级别 --> <root level="INFO"> <appender-ref ref="logSiftAppender" /> <!-- <appender-ref ref="STDOUT" /> --> <!-- <appender-ref ref="FILE" /> --> </root></configuration>
4、测试一下
package trade.a;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import trade.base.LogConstants;public class TestA { private static final Logger logger = LoggerFactory.getLogger(LogConstants.TEST_A); private static final Logger logger2 = LoggerFactory.getLogger(TestA.class); public static void main(String[] args) { //MDC.put(LogConstants.LOG_FILE_NAME, LogConstants.TEST_A); logger2.info("testA info level test....."); logger.info("---------------------------------------------------"); logger.error("testA debug level test....."); try { for(int j=0;j<14;j++){ for (int i = 0; i < 1000; i++) { logger.info("testA info level stg....." + i); } logger.info("count:" + j); } } catch (Exception e) { e.printStackTrace(); } }}
5、一个logUtil类
package trade.base;import org.slf4j.ILoggerFactory;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class LogUtil { //private static final String LOG_FILE_NAME = "logFileName"; public static final int ERROR = 0; public static final int INFO = 1; public static final int DEBUG = 2; public static final int WARN = 3; public static final int TRACE = 4; public static void trace(String name,String msg){ LogUtil.log(LogUtil.TRACE, name, msg); } public static void trace(String name,String msg,Throwable t){ LogUtil.log(LogUtil.TRACE, name, msg,t); } public static void w(String name,String msg){ LogUtil.log(LogUtil.WARN, name, msg); } public static void w(String name,String msg,Throwable t){ LogUtil.log(LogUtil.WARN, name, msg,t); } public static void d(String name,String msg){ LogUtil.log(LogUtil.DEBUG, name, msg); } public static void d(String name,String msg,Throwable t){ LogUtil.log(LogUtil.DEBUG, name, msg,t); } public static void i(String name,String msg){ LogUtil.log(LogUtil.INFO, name, msg); } public static void i(String name,String msg,Throwable t){ LogUtil.log(LogUtil.INFO, name, msg,t); } public static void e(String name,String msg){ LogUtil.log(LogUtil.ERROR, name, msg); } public static void e(String name,String msg,Throwable t){ LogUtil.log(LogUtil.ERROR, name, msg,t); } public static void log(int level, String name,String msg) { LogUtil.log(level, name, msg,null); } public static void log(int level, String name,String msg,Throwable t) { ILoggerFactory factory = LoggerFactory.getILoggerFactory(); Logger logger = factory.getLogger(name); //MDC.put(LogUtil.LOG_FILE_NAME, name); switch (level) { case 0: logger.error(msg, t); break; case 1: logger.info(msg, t); break; case 2: logger.debug(msg, t); break; case 3: logger.warn(msg,t); break; case 4: logger.trace(msg, t); break; default: logger.trace(msg, t); break; } }}
0 0
- logback日志垂直打印
- logback日志打印原理
- logback打印ibatis日志
- logback打印日志
- springboot中logback打印日志
- logback-classis日志打印注意事项
- spring 使用logback打印调试日志
- spring4 使用logback不打印日志
- Logback 将日志分级别打印
- Spring 利用logback输出打印日志:
- spring boot+logback+JdbcTemplate打印sql日志
- springboot logback 打印mybatis sql日志
- logback 实现debug 日志和warn(error)日志分开打印
- logback使用日志工具类静态方法打印日志
- spring-junit中使用 log4j或者logback 打印spring日志
- logback按时间与文件大小共同作用打印日志
- SpringBoot使用logback输出日志并打印sql信息
- SpringBoot使用logback输出日志并打印sql信息
- iOS开发--工具整理--各种图表
- Linux学习-使用yum自动安装rar和unrar
- [android] System.out.println解析
- C++ 7.1 函数的定义
- 颜色列表 delphi中使用颜色
- logback日志垂直打印
- ContentProvider深度探索
- 解决xcode6中图片在模拟器中显示但真机中不显示问题
- 正则表达式判断并取得string里面的URL地址
- TransactionProxyFactoryBean代理事务
- 最新版富文本编辑器UEditor操作教程
- Android屏幕适配全攻略(最权威的官方适配指导)
- android 阻断EditText自动获取焦点
- Ubuntu 安装mysql和简单操作