Log4j2簡單使用__Java提高

來源:互聯網
上載者:User
       Log4j 2 包含了基於LMAX 分離庫的下一代的非同步日誌系統,在多線程環境下,非同步日誌系統比 Log4j 1.x 和Logback 提高了10倍效能提升(輸送量和延遲率 )。

日誌的層級
       log4j規定了預設的幾個層級:trace < debug < info < warn < error < fatal。這裡要說明一下:
       1、層級之間是包含的關係,如果設定記錄層級是trace,則大於等於這個層級的日誌都會輸出。
       2、 trace:是追蹤,就是程式推進一下,就可以寫個trace輸出。
           debug: 調試,一般就只用這個作為最低層級。
           info: 輸出一下重要的資訊。
           warn: 有些資訊不是錯誤資訊,但是也要給一些提示。
           error: 錯誤資訊。
           fatal: 層級比較高了,重大錯誤。

具體參考官網:http://logging.apache.org/log4j/2.x/

簡單樣本(需要額外引入disruptor-3.3.2.jar包): 目錄結構:
   


代碼:

package com.zero.log4j2;import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;public class Log1 {private static Logger logger = LogManager.getLogger(Log1.class);public Log1() {logger.debug("Log1,我預設記錄在log1.log");logger.info("Log1,我預設記錄在log1.log");logger.warn("Log1,我預設記錄在log1.log");logger.error("Log1,我預設記錄在log1.log");}}
package com.zero.log4j2.log2;import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;public class Log2 {private static Logger logger = LogManager.getLogger();public Log2() {logger.debug("Log2, 我預設記錄到log2.log");logger.info("Log2, 我預設記錄到log2.log");logger.warn("Log2, 我預設記錄到log2.log");logger.error("Log2, 我預設記錄到log2.log");}}
package com.zero.log4j2;import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;public class Log3 {private static Logger logger = LogManager.getLogger();public Log3() {logger.debug("Log3, 我預設記錄到log1.log");logger.info("Log3, 我預設記錄到log1.log");logger.warn("Log3, 我預設記錄到log1.log");logger.error("Log3, 我預設記錄到log1.log");Log4j2Util.log("Log3," + " 我要記錄到log3.log", "zero");}}
package com.zero.log4j2;import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;public class Log4j2Util {private static Logger logger = LogManager.getLogger("zero");public static void log(String logStr, String logType) {Logger myLogger = LogManager.getLogger(logType);myLogger.info(logStr);myLogger.warn(logStr);logger.info("Log4j2Util, 我想記錄在log3.log");}}
package com.zero.log4j2;import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;import com.zero.log4j2.log2.Log2;public class Test {static Logger logger = LogManager.getLogger();public static void main(String[] args) {logger.info("log {}", 123456789);new Log1();new Log3();new Log2();}}
log4j2.xml
<?xml version="1.0" encoding="UTF-8"?><!-- No need to set system property "Log4jContextSelector" to any value when using <asyncLogger> or <asyncRoot>. --><Configuration status="WARN"><Properties><Property name="filedir">logs</Property></Properties><Appenders><!-- Async Loggers will auto-flush in batches, so switch off immediateFlush. --><RollingRandomAccessFile name="log1"fileName="${filedir}/log1.log" append="true" immediateFlush="false"filePattern="logs/app-%d{MM-dd-yyyy}.log"><PatternLayout><Pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%c{36}] %msg%xEx%n</Pattern></PatternLayout><bufferSize>262144</bufferSize><!--預設:256 * 1024 bytes --><Policies><!-- 基於時間的觸發策略。該策略主要是完成周期性的log檔案封存工作。 --><!-- interval,integer型,指定兩次封存動作之間的時間間隔。 --><!-- ====單位:以日誌的命名精度來確定單位,比如yyyy-MM-dd-HH 單位為小時,yyyy-MM-dd-HH-mm 單位為分鐘。 --><!-- modulate,boolean型,說明是否對封存時間進行調製。 --><!-- ====若modulate=true,則封存時間將以0點為邊界進行位移計算。 --><!-- ====比 如,modulate=true,interval=4hours,那麼假設上次封存日誌的時間為01:00,則下次封存日誌的時間為04:00,之後的封存時間依次為08:00,12:00。。。 --><TimeBasedTriggeringPolicy interval="24"modulate="true" /></Policies></RollingRandomAccessFile><RollingRandomAccessFile name="log2" fileName="logs/log2.log"append="true" immediateFlush="false" filePattern="logs/log2-%d{MM-dd-yyyy}.log"><PatternLayout><Pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%c{36}] %msg%xEx%n</Pattern></PatternLayout><bufferSize>262144</bufferSize><!--預設:256 * 1024 bytes --><Policies><TimeBasedTriggeringPolicy interval="24"modulate="true" /></Policies></RollingRandomAccessFile><RollingRandomAccessFile name="log3"fileName="${filedir}/log3.log" append="true" immediateFlush="false"filePattern="logs/log3-%d{MM-dd-yyyy}.log"><PatternLayout><Pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%c] %msg%xEx%n</Pattern></PatternLayout><bufferSize>262144</bufferSize><!--預設:256 * 1024 bytes --><Policies><TimeBasedTriggeringPolicy interval="24"modulate="true" /></Policies></RollingRandomAccessFile></Appenders><Loggers><AsyncRoot level="debug"><AppenderRef ref="log1" /></AsyncRoot><AsyncLogger name="com.zero.log4j2.log2" level="trace"includeLocation="false" additivity="false"><AppenderRef ref="log2" /></AsyncLogger><AsyncLogger name="zero" level="debug" includeLocation="false"additivity="false"><AppenderRef ref="log3" /></AsyncLogger></Loggers></Configuration>









聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.