您好,登錄后才能下訂單哦!
小編給大家分享一下如何使用logback實現按需求打印日志到自定義的文件里,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class LoggerUtils { public static <T> Logger Logger(Class<T> clazz) { return LoggerFactory.getLogger(clazz); } /** * 打印到指定的文件下 * * @param desc 日志文件名稱 * @return */ public static Logger Logger(LogFileName desc) { return LoggerFactory.getLogger(desc.getLogFileName()); } }
import org.apache.commons.lang3.StringUtils; public enum LogFileName { //配置到logback.xml中的logger name="getNextHh" GET_NEXT_HH("getNextHh"), GET_AGAIN_HH("getAgainHh"), GET_AI_ACTION("getAiAction"), TRAIN_ERROR("trainError"), USER_ERROR("userError"), PAY_ERROR("payError"), REVIEW_ERROR("reviewError"), WX_ERROR("wxError"), SYSTEM_ERROR("systemError"), PAY_DEBUG("payDebug"); private String logFileName; LogFileName(String fileName) { this.logFileName = fileName; } public String getLogFileName() { return logFileName; } public void setLogFileName(String logFileName) { this.logFileName = logFileName; } public static LogFileName getAwardTypeEnum(String value) { LogFileName[] arr = values(); for (LogFileName item : arr) { if (null != item && StringUtils.isNotBlank(item.logFileName)) { return item; } } return null; } }
<?xml version="1.0" encoding="UTF-8"?> <configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.padual.com/java/logback.xsd" debug="false" scan="true" scanPeriod="30 second"> <property name="PROJECT" value="poker_system"/> <property name="ROOT" value="C:/Users/Administrator/Desktop/logs/${PROJECT}/"/> <property name="FILESIZE" value="50MB"/> <property name="MAXHISTORY" value="30"/> <!-- 彩色日志 --> <!-- 彩色日志依賴的渲染類 --> <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/> <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/> <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/> <!-- 彩色日志格式 --> <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss:SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/> <timestamp key="DATETIME" datePattern="yyyy-MM-dd HH:mm:ss"/> <!-- 控制臺打印 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${CONSOLE_LOG_PATTERN}</pattern> <charset>UTF-8</charset> </encoder> </appender> <!-- ERROR 輸入到文件,按日期和文件大小 --> <appender name="ERROR-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender"> <encoder> <pattern>${CONSOLE_LOG_PATTERN}</pattern> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <!--過濾器,只打ERROR級別的日志--> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${ROOT}%d/error/systemError.%i.log</fileNamePattern> <maxHistory>${MAXHISTORY}</maxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>${FILESIZE}</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> </appender> <appender name="TRAINERROR-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender"> <encoder> <pattern>${CONSOLE_LOG_PATTERN}</pattern> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <!--過濾器,只打ERROR級別的日志--> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${ROOT}%d/error/trainError.%i.log</fileNamePattern> <maxHistory>${MAXHISTORY}</maxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>${FILESIZE}</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> </appender> <appender name="USERERROR-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender"> <encoder> <pattern>${CONSOLE_LOG_PATTERN}</pattern> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <!--過濾器,只打ERROR級別的日志--> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${ROOT}%d/error/userError.%i.log</fileNamePattern> <maxHistory>${MAXHISTORY}</maxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>${FILESIZE}</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> </appender> <appender name="PAYERROR-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender"> <encoder> <pattern>${CONSOLE_LOG_PATTERN}</pattern> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <!--過濾器,只打ERROR級別的日志--> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${ROOT}%d/error/payError.%i.log</fileNamePattern> <maxHistory>${MAXHISTORY}</maxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>${FILESIZE}</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> </appender> <appender name="REVIEWERROR-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender"> <encoder> <pattern>${CONSOLE_LOG_PATTERN}</pattern> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <!--過濾器,只打ERROR級別的日志--> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${ROOT}%d/error/reviewError.%i.log</fileNamePattern> <maxHistory>${MAXHISTORY}</maxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>${FILESIZE}</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> </appender> <!-- WARN 輸入到文件,按日期和文件大小 --> <appender name="WARN-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender"> <encoder> <pattern>${CONSOLE_LOG_PATTERN}</pattern> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>WARN</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${ROOT}%d/warn.%i.log</fileNamePattern> <maxHistory>${MAXHISTORY}</maxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>${FILESIZE}</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> </appender> <!-- INFO 輸入到文件,按日期和文件大小 --> <appender name="INFO-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender"> <encoder> <pattern>${CONSOLE_LOG_PATTERN}</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.TimeBasedRollingPolicy"> <fileNamePattern>${ROOT}%d/info.%i.log</fileNamePattern> <maxHistory>${MAXHISTORY}</maxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>${FILESIZE}</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> </appender> <!-- DEBUG 輸入到文件,按日期和文件大小 --> <appender name="DEBUG-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender"> <encoder> <pattern>${CONSOLE_LOG_PATTERN}</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"> <fileNamePattern>${ROOT}%d/debug.%i.log</fileNamePattern> <maxHistory>${MAXHISTORY}</maxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>${FILESIZE}</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> </appender> <!-- DEBUG 輸入到文件,按日期和文件大小 --> <appender name="PAYDEBUG-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender"> <encoder> <pattern>${CONSOLE_LOG_PATTERN}</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"> <fileNamePattern>${ROOT}%d/debug/payDebug.%i.log</fileNamePattern> <maxHistory>${MAXHISTORY}</maxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>${FILESIZE}</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> </appender> <!-- TRACE 輸入到文件,按日期和文件大小 --> <appender name="TRACE-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender"> <encoder> <pattern>${CONSOLE_LOG_PATTERN}</pattern> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>TRACE</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${ROOT}%d/trace.%i.log</fileNamePattern> <maxHistory>${MAXHISTORY}</maxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>${FILESIZE}</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> </appender> <!-- Logger 根目錄 --> <root level="INFO"> <appender-ref ref="STDOUT"/> <!--<appender-ref ref="ERROR-OUT"/>--> <!--<appender-ref ref="WARN-OUT"/>--> <!--<appender-ref ref="INFO-OUT"/>--> <!--<appender-ref ref="TRACE-OUT"/>--> <!--<appender-ref ref="REVIEWERROR-OUT"/>--> <!--<appender-ref ref="PAYDEBUG-OUT"/>--> <!--<appender-ref ref="PAYERROR-OUT"/>--> <!--<appender-ref ref="USERERROR-OUT"/>--> <!--<appender-ref ref="TRAINERROR-OUT"/>--> </root> <logger name="com.xxx" additivity="false" level="DEBUG"> <appender-ref ref="DEBUG-OUT"/> </logger> <logger name="com.xxx" additivity="false" level="ERROR"> <appender-ref ref="ERROR-OUT"/> </logger> <logger name="com.xxx" additivity="false" level="INFO"> <appender-ref ref="INFO-OUT"/> </logger> <logger name="com.xxx" additivity="false" level="TRACE"> <appender-ref ref="TRACE-OUT"/> </logger> <logger name="com.xxx" level="STDOUT"> <appender-ref ref="STDOUT"/> <appender-ref ref="ERROR-OUT"/> <appender-ref ref="WARN-OUT"/> <appender-ref ref="INFO-OUT"/> <appender-ref ref="TRACE-OUT"/> <appender-ref ref="REVIEWERROR-OUT"/> <appender-ref ref="DEBUG-OUT"/> <!--<appender-ref ref="PAYDEBUG-OUT"/>--> <appender-ref ref="PAYERROR-OUT"/> <appender-ref ref="USERERROR-OUT"/> <appender-ref ref="TRAINERROR-OUT"/> </logger> <!-- 不同的業(yè)務邏輯日志打印到指定文件夾--> <logger name="trainError" level="ERROR"> <appender-ref ref="TRAINERROR-OUT"/> </logger> <logger name="userError" level="ERROR"> <appender-ref ref="USERERROR-OUT"/> </logger> <logger name="payError" level="ERROR"> <appender-ref ref="PAYERROR-OUT"/> </logger> <logger name="payDebug" additivity="false" level="DEBUG"> <appender-ref ref="PAYDEBUG-OUT"/> </logger> <logger name="reviewError" level="ERROR"> <appender-ref ref="REVIEWERROR-OUT"/> </logger> <logger name="systemError" level="ERROR"> <appender-ref ref="ERROR-OUT"/> </logger> </configuration>
以上是“如何使用logback實現按需求打印日志到自定義的文件里”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。