博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
log4j
阅读量:5324 次
发布时间:2019-06-14

本文共 3902 字,大约阅读时间需要 13 分钟。

1.

a). 两种配置方式,log4j.xml和log4j.propertiesb). 由3个东西组成,        "logger"--负责采集日志,程序中使用,有继承关系        "appender"--负责日志输出到哪里,控制台或文件        "layout"--定义日志输出的格式

1.1 Maven

log4j
log4j
1.2.17

1.2 日志打印时组件调用顺序

a). 日志信息传入 Logger.b). 将日志信息封装成 LoggingEvent 对象并传入 Appender.c). 在 Appender 中调用 Filter 对日志信息进行过滤,调用 Layout 对日志信息进行格式化,然后输出.d). Logger Logger = LogManager.getLogger("categorylog");   (
) --> category --> Appender

1.5 示例

public class Ts {    // 按字符串匹配category,无则匹配到root, 支持按package层级匹配    Logger Logger = LogManager.getLogger(Ts.class);    @Test    public void test() throws InterruptedException {        while (true) {            Logger.debug("This is debug ..");            Logger.info("This is info ..");            Logger.error("This is error ..\n\n");            Thread.sleep(2000);            // log4j.xml动态修改            DOMConfigurator.configure(Ts.class.getResource("/log4j.xml"));        }    }}//log4j.xml

3.

3.2 Appender--日志位置

内置 appender :     1).ConsoleAppender (控制台),     2).FileAppender (文件),     3).DailyRollingFileAppender (每天产生一个日志文件),     4).RollingFileAppender (文件大小到达指定尺寸的时候产生一个 新的文件)     5).WriterAppender (将日志信息以流格式发送到任意指定的地方)

3.2.1 示例-每天输出一个日志

3.2.2 cmi中实际使用示例

3.2.3

3.2.5

继承AppenderSkeleton类-->[一般]实现Append方法即可

 

3.4.

//内置layout    HTMLLayout(以HTML表格形式布局),    PatternLayout(可自定义布局和输出内容)-- 常用     SimpleLayout(包含日志信息的级别和信息字符串),    TTCCLayout(包含日志产生的时间、线程、类别等等信息)Log4J采用类似C的printf函数的格式化日志,打印参数如下: -- 常用 “[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n”    %p  输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL    %l  输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:com.Testlog4.main(TestLog4.java:10)        %d  输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921    %n  输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”        %m  输出代码中指定的消息                %x           %t  输出产生该日志事件的线程名            %r  输出自应用启动到输出该log信息耗费的毫秒数    %c  输出所属的类目,通常就是所在类的全名    %M   调用logger的方法名。

3.4.1 示例参见3.3.1节

3.4.2 自定义layout--自定义输出格式

继承 TTCCLayout等内置的layout,或是layout接口-->实现format方法即可
public class MdnDebugLogLayout extends TTCCLayout{    private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss.SSS";    public MdnDebugLogLayout()    {    }    @SuppressWarnings("unchecked")    public String format(LoggingEvent event)    {        LocationInfo locationInfo = event.getLocationInformation();        String lineNumber = locationInfo.getLineNumber();        String fileName = locationInfo.getFileName();        String threadName = event.getThreadName();        String message = event.getRenderedMessage();        setDateFormat(DATE_FORMAT);        buf.setLength(0);        buf.append("[");        buf.append(threadName);        return buf.toString();    }}

3.5

//Logger Logger = LogManager.getLogger("categorylog");   (
) --> category --> Appender

转载于:https://www.cnblogs.com/Desneo/p/7906341.html

你可能感兴趣的文章
codevs2596 售货员的难题(状压dp)
查看>>
一次心惊肉跳的服务器误删文件的恢复过程
查看>>
基于Java的打包jar、war、ear包的作用与区别详解
查看>>
Redis学习笔记之基础篇
查看>>
[解读REST] 2.REST用来干什么的?
查看>>
Cordova Android源代码分析系列一(项目总览和CordovaActivity分析)
查看>>
【慢慢学Android】:8.获取所有短信
查看>>
Spring Boot 项目学习 (一) 项目搭建
查看>>
.Net DateTime跨时区相关问题
查看>>
js入门2计算平方
查看>>
汇编语言实验四
查看>>
不申请额外内存空间就可以完成数据互换的算法:int x=a,y=b;设计一个算法,不申请第三个变量,试把a b互换位置 (按位异或)...
查看>>
KVM 介绍(3):I/O 全虚拟化和准虚拟化 [KVM I/O QEMU Full-Virtualizaiton Para-virtualization]...
查看>>
OpenStack 企业私有云的若干需求(3):多租户和租户间隔离(multi-tenancy and isolation)...
查看>>
sql server 2005/2008 设置 sql身份验证 和 sa空密码(像sql2000一样使用)(转载)
查看>>
linux下如何查看所有的用户和组信息?
查看>>
转:Visual C++ sprintf()函数用法
查看>>
移动敏捷测试方法和工具
查看>>
Dubbo 支持哪些序列化协议?
查看>>
vue hash模式转为history模式(二级路由)
查看>>