<?xml version="1.0" encoding="utf-8"?> <configuration> <springProperty scope="context" name="logName" source="spring.application.name"/> <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender"> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern>[%d{yyyy-MM-dd HH:mm:ss\} %-5p] [%t] {%c:%L}-%m%n</pattern> </layout> </appender> <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>DENY</onMatch> <onMismatch>ACCEPT</onMismatch> </filter> <encoder> <pattern>[%d{yyyy-MM-dd HH:mm:ss\} %-5p] [%t] {%c:%L}-%m%n</pattern> </encoder> <!--滚动策略--> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--路径--> <fileNamePattern>/Users/mc/Desktop/photo/${logName}/${logName}.info.%d.log</fileNamePattern> </rollingPolicy> </appender> <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>ERROR</level> </filter> <encoder> <pattern>[%d{yyyy-MM-dd HH:mm:ss\} %-5p] [%t] {%c:%L}-%m%n</pattern> </encoder> <!--滚动策略--> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--路径--> <fileNamePattern>/Users/mc/Desktop/photo/${logName}/${logName}.error.%d.log</fileNamePattern> </rollingPolicy> </appender> <springProfile name="dev,test"> <root level="DEBUG"> <appender-ref ref="consoleLog" /> <appender-ref ref="fileInfoLog" /> <appender-ref ref="fileErrorLog" /> </root> </springProfile> <springProfile name="release"> <root level="INFO"> <appender-ref ref="fileInfoLog" /> <appender-ref ref="fileErrorLog" /> </root> </springProfile> </configuration>
这样配置完之后哪个类需要打印日志需要在每个类中声明,很麻烦,所以自定义一个打印日志的工作类
public class LogBacks { // private static final Logger logger = LoggerFactory.getLogger(getClassName()); public static void error(String msg) { LoggerFactory.getLogger(getClassName()).error(msg); } public static void error(String msg, Object... obj) { LoggerFactory.getLogger(getClassName()).error(msg, obj); } public static void warn(String msg) { LoggerFactory.getLogger(getClassName()).error(msg); } public static void warn(String msg, Object... obj) { LoggerFactory.getLogger(getClassName()).error(msg, obj); } public static void info(String msg) { LoggerFactory.getLogger(getClassName()).info(msg); } public static void info(String msg, Object... obj) { LoggerFactory.getLogger(getClassName()).info(msg, obj); } public static void debug(String msg) { LoggerFactory.getLogger(getClassName()).debug(msg); } public static void debug(String msg, Object... obj) { LoggerFactory.getLogger(getClassName()).debug(msg, obj); } // 获取调用 error,info,debug静态类的类名 private static String getClassName() { return new SecurityManager() { public String getClassName() { return getClassContext()[3].getName(); } }.getClassName(); } }
这样哪个类需要打印日志或者错误信息直接调取这个工具类的方法就好