Log4j打印参数配置

Log4j打印参数配置

<?xml version="1.0" encoding="UTF-8" ?>
<Configuration status="INFO" monitorInterval="600">
    <Properties>
        <property name="ModuleName">zzz</property>
    </Properties>

    <Appenders>
        <Console name="ConsoleAppender">
            <PatternLayout pattern="|%d{yyyy-MM-dd HH:mm:ss.SSS}|%5p|%5t|%l|%m%n" />
        </Console>

        <RollingRandomAccessFile name="SystemAppender"
            filename="/logs/CPCN/Payment/${ModuleName}/${ModuleName}.log"
            filepattern="/logs/CPCN/Payment/${ModuleName}/$${date:yyyy-MM-dd}/${ModuleName}.log.%d{yyyy-MM-dd-HHmmss}-%i.log">
            <PatternLayout pattern="|%d{yyyy-MM-ddHH:mm:ss.SSS}|%5p|%5t|%l|%m%n" />
            <Policies>
                <TimeBasedTriggeringPolicy modulate="true"
                    interval="3600" />
                <SizeBasedTriggeringPolicy size="64MB" />
            </Policies>
            <DefaultRolloverStrategy max="1000" />
        </RollingRandomAccessFile>
    </Appenders>

    <Loggers>
        <AsyncLogger name="system" additivity="false" level="INFO"
            includeLocation="true">
            <AppenderRef ref="SystemAppender" />
        </AsyncLogger>

        <AsyncLogger name="console" additivity="false" level="INFO"
            includeLocation="true">
            <AppenderRef ref="SystemAppender" />
            <AppenderRef ref="ConsoleAppender" />
        </AsyncLogger>

        <AsyncLogger name="dao" additivity="false" level="INFO"
            includeLocation="true">
            <AppenderRef ref="SystemAppender" />
        </AsyncLogger>

        <AsyncRoot level="INFO" includeLocation="true">
            <AppenderRef ref="SystemAppender" />
        </AsyncRoot>
    </Loggers>
</Configuration>

日志级别

FATAL       0  
ERROR      3  
WARN       4  
INFO         6  
DEBUG      7 

 

日志输出目的地

 

org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方) 

 

 

 

日志输出格式

org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息) 

 

打印参数

%m   输出代码中指定的消息

%p   输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL 

%r   输出自应用启动到输出该log信息耗费的毫秒数 

%c   输出所属的类目,通常就是所在类的全名 

%t   输出产生该日志事件的线程名 

%n   输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n” 

%d   输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS},输出类似:2002年10月18日  22 : 10 : 28 , 921  

%l   输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数

 

看个栗子

|%d{yyyy-MM-ddHH:mm:ss.SSS}|%5p|%5t|%l|%m%n

按照上面的套一下

时间|类型|线程名|事件发送位置| %m(真实的日志信息)  %n (换行) 

根据这个可以知道

 

    public void warn(LogType logType, Object message) {
        String msgFormatted = msgFormat(logType, message);
        logger.warn(msgFormatted);
    }
    protected String msgFormat(LogType logType, Object message) {
        StringBuilder sb = new StringBuilder();
        LogContextVO logContext = LogContextHolder.getInstance().getLogContext();
        sb.append(logContext.getTraceID());
        sb.append("|").append(logContext.getTransferID());
        sb.append("|").append(logContext.getLocalIP());
        sb.append("|").append(logContext.getTraceIP());
        sb.append("|").append(moduleID);
        sb.append("|").append(logContext.getRootID());
        sb.append("|").append(logType);
        sb.append("|");
        sb.append(message != null ? "|" + message.toString() + "|" : "");
        return sb.toString();
    }

 

message 增加一些内容

|traceID|tranceferID|localIP|TraceIp|moduleID|rootID|logType|        | 日志描述|

|1805181822152053531749637|0.3.2.7.2|192.168.145.90:|192.168.145.90:|3511|20180518182215795295|SQL| |哈哈哈|

配置Junit jar包之后 采用Debug 方式运行


package test.payment;

import java.io.File;
import java.util.HashMap;
import java.util.Map;

import org.apache.logging.log4j.core.config.Configurator;
import org.junit.Test;

import cpcn.payment.tools.log.Loggerx;

/**
 * 类说明
 * 
 * <pre>
 * Modify Information:
 * Author        Date          Description
 * ============ =========== ============================
 * DELL          2019年4月25日    Create this file
 * </pre>
 * 
 */

public class LogTest {
    
    @Test
    public void testLog() throws InterruptedException {
     // log4j
        String log4jConfigFile = "./config" + File.separatorChar + "log4j2.xml";
        System.out.println(log4jConfigFile);
        Configurator.initialize(null, log4jConfigFile);
        Loggerx LOGGER = Loggerx.getLogger("console");
//        Logger LOGGER = Logger.getLogger("system");
        Map<String, String> map = new HashMap<>(4);
        map.put("channelItemKey", "channelItemKey");
        map.put("responseMessage", "responseMessage");
        map.put("taskId", "100101");
        map.put("startTime", "201908151612");
        map.put("finishTime", "201908151612");
        map.put("receiptTime", "20190823185055999");
        map.put("rceiptStatus", "reject");
        
        LOGGER.newLog().keyword(map).add("通道费率匹配失败").error();
        LOGGER.newLog().keyword(map).add("rceiptStatus 测试 ").info();
        LOGGER.newLog().keyword(map).add("rceiptStatus 测试 ").warn();
    }
    


}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangxiaoming

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值