Java使用Log4記錄日志


我們在系統使用中,為了方便查找問題,因此需要記錄操作的日志,而目前比較成熟穩定的程序日志記錄方式就是Log4,本人也是菜鳥,然后再學習研究中就記錄一下使用方式,以方便今后查閱,同時本文章參考了博客園:http://www.cnblogs.com/zhangpengshou/p/5128050.html 的文章,在此表示感謝。

Log4有1.x版本和2.x版本,兩個版本的使用方式有很大區別,為了方便在此使用2.x版本。

代碼很簡單,首先要配置xml,在類的同級創建log4j2.xml如下:

<?xml version="1.0" encoding="UTF-8"?>

<configuration status="error">
    <!--先定義所有的appender-->
    <appenders>
        <!--這個輸出控制台的配置-->
        <Console name="Console" target="SYSTEM_OUT">
            <!--這個是輸出日志的格式-->
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </Console>
        <!--文件會打印出所有信息,這個log每次運行程序會自動清空,由append屬性決定,適合臨時測試用-->
        <File name="Error" fileName="E:/logs/error.log" append="false">
            <!--控制台只輸出level及以上級別的信息(onMatch),其他的直接拒絕(onMismatch)-->
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="記錄時間:%date%n線程ID:[%thread] %n日志級別:%-5level%n記錄位置:%location%n消息描述:%property{Message}%n異常:%exception%n消息:%message%newline%n------------------------------------------%n"/>
        </File>

        <!--這個會打印出所有的信息,每次大小超過size,則這size大小的日志會自動存入按年份-月份建立的文件夾下面並進行壓縮,作為存檔-->
        <RollingFile name="RollingFile" fileName="E:/logs/history.log"
                     filePattern="E:/log/$${date:yyyy-MM}/history-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout pattern="記錄時間:%date%n線程ID:[%thread] %n日志級別:%-5level%n記錄位置:%location%n消息描述:%property{Message}%n異常:%exception%n消息:%message%newline%n------------------------------------------%n"/>
            <SizeBasedTriggeringPolicy size="50MB"/>
        </RollingFile>
    </appenders>
    <!--然后定義logger,只有定義了logger並引入的appender,appender才會生效-->
    <loggers>
        <!--建立一個默認的root的logger-->
        <root level="trace">
            <appender-ref ref="Error"/>
            <appender-ref ref="RollingFile"/>
            <appender-ref ref="Console"/>
        </root>
    </loggers>
</configuration>

代碼里面都有注釋,在此不做詳細解說了,關於Log4的其它配置可百度一下。Java代碼使用方式如下:

import java.io.File;
import java.util.List;

import org.dom4j.*;
import org.dom4j.io.SAXReader;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class Hello {
    private static Logger logger = LogManager.getLogger(Hello.class);

    public static void main(String[] args) {
        logger.debug("測試");
        logger.error("錯誤消息");
    }
}

鳴謝:http://www.cnblogs.com/zhangpengshou/p/5128050.html

 

===============================================================================================

下面提供一個log4j1.x版本的實現(log4j.properties):

# - level, OFF/FATAL/ERROR/WARN/INFO/DEBUG/ALL 定義全局變量,后面有引用
log.name=bocai-thrift
log.dir=/data1/bocai/apps/bocai-thrift/log

###
log4j.logger.org.apache.kafka=WARN
log4j.logger.org.elasticsearch=WARN
log4j.logger.org.apache.zookeeper=WARN
log4j.logger.io.netty=WARN
log4j.logger.com.alibaba.druid=WARN
log4j.logger.org.mongodb.driver=WARN


### globel
log4j.rootLogger=DEBUG,console,debuglog,log,errorlog,logstash
log4j.additivity.org.apache=true


### console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.err
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %c{2}.%M(%L) - %m%n


### debug
log4j.appender.debuglog=org.apache.log4j.RollingFileAppender
log4j.appender.debuglog.File=${log.dir}/${log.name}-debug.log
log4j.appender.debuglog.Append=true
log4j.appender.debuglog.Threshold=DEBUG
log4j.appender.debuglog.MaxFileSize=16MB
log4j.appender.debuglog.MaxBackupIndex=20
log4j.appender.debuglog.layout=org.apache.log4j.PatternLayout
log4j.appender.debuglog.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %c{2}.%M(%L) - %m%n


### log
log4j.appender.log=org.apache.log4j.DailyRollingFileAppender
log4j.appender.log.File =${log.dir}/${log.name}.log
log4j.appender.log.Threshold=INFO
log4j.appender.log.Append=true
log4j.appender.log.DatePattern='.'yyyy-MM-dd
log4j.appender.log.layout=org.apache.log4j.PatternLayout
log4j.appender.log.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %c{2}.%M(%L) - %m%n


### error
log4j.appender.errorlog=org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorlog.File =${log.dir}/${log.name}-error.log
log4j.appender.errorlog.Append=true
log4j.appender.errorlog.Threshold=ERROR
log4j.appender.errorlog.DatePattern='.'yyyy-MM-dd
log4j.appender.errorlog.layout=org.apache.log4j.PatternLayout
log4j.appender.errorlog.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %c{2}.%M(%L) - %m%n


### logstash 推送到es數據庫里面
log4j.appender.logstash=org.apache.log4j.net.SocketAppender
log4j.appender.logstash.RemoteHost=192.168.23.79
log4j.appender.logstash.port=4562
log4j.appender.logstash.ReconnectionDelay=60000
log4j.appender.logstash.LocationInfo=true

 


免責聲明!

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



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