通過LOGBACK實現每個類、包或自定義級別


實現LOGBACK對每個包或者類或者通過自定義級別的方式實現自定義輸出的日志進入制定的文件。查閱了很多資料,都沒有找到行之有效的解決方案,直到看到了這篇文章http://www.360doc.com/content/14/1015/18/8072791_417222724.shtml  找到了解決方案。

解決方案大體思路:正常來講配置好LOGBACK后,在代碼頁面使用private static Logger logger = LoggerFactory.getLogger(*.class);的方式就可以直接輸出日志

logger.trace("======trace");
logger.debug("======debug");
logger.warn("======warn");
logger.error("======error");

但是!輸出了很多我們不想要的無用信息,從海量的日志里找我們的輸出如大海撈針。

自定義日志級別方式如下:

1、代碼文件:Logger monitorLogger = LoggerFactory.getLogger("monitor");  //在聲明實例時創建自定義級別標簽,MOBITOR就是自定義的標簽。

2、代碼文件:輸出日志采用這樣的方式monitorLogger.info("======info");

3、配置文件:聲明LOGGER的處理節點

 <logger name="monitor" additivity="false">
        <appender-ref ref="file—monitor"/>  
      </logger>   
 <!-- 時間滾動輸出 level為 monitor 日志 -->
    <appender name="file—monitor"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <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>D:/logs/monitor.%d{yyyy-MM-dd}.log</FileNamePattern>
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%date [%thread] %-5level %logger{80} - %msg%n</pattern>
        </encoder>
    </appender>

保持JAVA代碼實例標簽MONITOR和配置文件中的LOGGER NAME屬性一致即可

 

 

通過如上代碼的實現,就可以看到我們輸出的INFO文件是獨立的 並且沒有系統的任何信息 都是自己指定輸出的內容。

 

---------

額外話題:今天為了解決這個問題查閱了很多資料,分享給其他人。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM