博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
log4j(二)——如何控制日志信息的输出?
阅读量:5360 次
发布时间:2019-06-15

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

一:测试环境与一样,这里不再重述

 

二:先看栗子再来下结论

import org.apache.log4j.*;import test.log4j.bean.Person;//by godtruepublic class UseLog4j {    //日志记录器    private static Logger LOGGER = LogManager.getLogger(UseLog4j.class);    //循环次数    private static long CYCLE = 102;    //程序入口——主函数    public static void main(String[]args){        long startTime = System.currentTimeMillis();        /**         * 使用自定义的log4j的环境配置         */        /**         * 一:定义日志信息的格式化方式,Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下:         * 1)%t 用来输出生成该日志事件的线程的名称         * 2)%p 用于输出日志事件的优先级,即DEBUG,INFO,WARN,ERROR,FATAL         * 3)%r 用于输出从layout(布局)的构建到日志事件创建所经过的毫秒数         * 4)%c 用于输出日志事件的category(类别),通常就是所在类的全名         * 5)%F 用于输出被发出日志记录请求,其中的文件名         * 6)%d 用于输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:20017年02月18日 22:10:28,921         * 7)%L 用于输出日志事件的发生位置,即在代码中的行数。举例:10         * 8)%l 用于输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)         * 9)%% 用于输出%标志         * 10)%M 用于输出打印该条日志的方法名         * 11)%m 用于输出代码中指定的消息         * 12)%n 用于输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”         *         *         * 当我们运行程序后发现,因为输出的日志信息长短不一,所以对不齐,看起来不好看,那么有什么法子呢?log4j也发现这个问题,并且为我们提供了格式修饰符         * 格式修饰符:可以控制输出字段的最小字段宽度、最大字段宽度、字段对齐格式,如下所示:         * 序号 格式修饰符    对齐方式       最小宽度            最大宽度            备注(对%c来使用格式修饰符,所以改变的是类别名称)         *         * 1)  %-20c         左对齐            20                none            用空格右垫,如果类别名称少于20个字符长         * 2)  %20c         右对齐            20                none            用空格左垫,如果类别名称少于20个字符长         * 3)  %.30c         左对齐            none            30                从开始截断,如果类别名称超过30个字符长         * 4)  %-20.30c     左对齐            20                30                用空格右侧垫,如果类别名称短于20个字符。但是,如果类别名称长度超过30个字符,那么从开始截断。         * 5)  %20.30c         右对齐            20                30                用空格左侧垫,如果类别名称短于20个字符。但是,如果类别名称长度超过30个字符,那么从开始截断。         *         */        //试验,并查看日志格式化后的效果        //String pattern = "[1]%t - [2]%p - [3]%r - [4]%c - [5]%F - [6]%d  - [7]%L - [8]%l - [9]%% - [10]%M  - [11]%m[12]%n"; //运行程序看看,是不是我们期待的日志输出样子        //试验,并查看日志格式化后的效果        String pattern = "[1]%-10p - [2]%10p - [3]%.3p  - [4]%-10.3p - [5]%10.3p 。 %n"; //运行程序看看,是不是我们期待的日志输出样子        /**         * 二:定义日志输出的风格样式,日志输出的风格主要有以下几种(通过官方文档我们会发现还有其他的):         * 1)org.apache.log4j.HTMLLayout(以HTML表格形式布局),         * 2)org.apache.log4j.PatternLayout(可以灵活地指定布局模式,这个在我的实际工作中是最常用的),         * 3)org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),         * 4)org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)         */        Layout layout = new PatternLayout(pattern);        /**         * 三:定义日志输出的目的地,日志输出的目的地主要中以下几种(通过官方文档我们会发现还有好多种类的):         * 1)org.apache.log4j.ConsoleAppender(控制台),         * 2)org.apache.log4j.FileAppender(文件),         * 3)org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),         * 4)org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件,这个在我的实际工作中也是最常用的),         * 5)org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)         */        Appender appender= new ConsoleAppender(layout);        //配置日志输出的定义,主要有三点:1:输出什么级别的日志信息,2:将日志信息输出到那里,3:输出的日志以什么格式展示        BasicConfigurator.configure(appender);        /**         * 日志输出的级别,主要有以下几种:         * 1)ALL    各级包括自定义级别。         * 2)TRACE    最详细的信息。一般这些信息只记录到日志文件中。自版本1.2.12[3]。         * 3)DEBUG    流经系统的详细信息。一般这些信息只记录到日志文件中。         * 4)INFO    令人感兴趣的运行时事件(启动/关闭)。一般这些信息将立即呈现在状态控制台上,因而要保守使用,并保持到最低限度。         * 5)WARN    使用已过时的API,API的滥用,潜在错误,其他不良的或意外的运行时的状况(但不一定是错误的)。一般这些信息将立即呈现在状态控制台上。         * 6)ERROR    其他运行时错误或意外情况。一般这些信息将立即呈现在状态控制台上。         * 7)FATAL    导致应用程序提前终止的严重错误。一般这些信息将立即呈现在状态控制台上。         * 8)OFF    最高级别,用于关闭日志记录。         *         * 日志的级别之间的大小关系如右所示:ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF         */        for(int i=0;i

三:结论

      1)如果将上述代码中的注释全部去掉,你会发现这段代码其实是相当的简单的,注释是试验的时候添加上的,也是我想记住的知识点,它们就是使用log4j框架控制日志输出的方式了

      2)上面的代码有以下几部分构成

           2-1)控制日志信息输出格式的——pattern

           2-2)控制日志信息输出样式的——layout

           2-3)控制日志信息输出目的地的——appender

           2-4)控制日志信息输出的——LOGGER,他可以调用不同级别的日志输出方法,然后根据配置的日志输出级别来控制什么方法会被调用,这个后面会再次讲到的

       3)无论是通过配置文件控制,还是通过程序本身控制,我们想控制的基本是  2) 所描述的这些部分,这些功能也是一个日志框架提供的最基本的功能

 

转载于:https://www.cnblogs.com/godtrue/p/6442347.html

你可能感兴趣的文章
关于ASP.NET MVC开发设计中出现的问题与解决方案汇总 【持续更新】
查看>>
关于Entity Framework中的Attached报错的完美解决方案终极版
查看>>
Selenium之Web页面滚动条滚操作
查看>>
组合数据类型练习,英文词频统计实例上
查看>>
Uber回馈开源的一些软件
查看>>
day 3 修改haproxy.cfg 作业
查看>>
UIScrollView —— 缩放实现案例(二)
查看>>
【Qt】Qt Linguist介绍【转】
查看>>
sim usim Uim 区别
查看>>
网页中插入透明Flash的方法和技巧
查看>>
动态内存申请函数选择(realloc、malloc 、alloca、 calloc)
查看>>
获取元素属性get_attribute
查看>>
视觉设计师的进化
查看>>
Python/jquery
查看>>
【BZOJ】【2132】圈地计划
查看>>
Lua 语言基本语法
查看>>
ARM 的Thumb状态测试
查看>>
windows下读取utf-8文件
查看>>
apache 启动不了的排查方法
查看>>
Java有没有goto?
查看>>