Log4j入门教程

更新时间:2023-06-19 10:42:42 阅读: 评论:0

与Log4J邂逅
与log4j邂逅应该是通过类似这样的语句:
logger.info("Here is some information!");
从字面意思可以猜到这条语句的功能是输出"Here is some information!"这条日志信息。我们还可能碰到
logger.debug("Here is some information!")这样的语句。这两条语句的不同之处就是info 和debug这两个单词,可能很快大家就会遇到像是warn和fatal这样的单词。从字面意思上我们也会很容易的猜到这几个词代表的是日志信息的级别。
那么日志信息一共有哪些级别呢?从日志信息的重要性由低到高排练为:all、trace、debug、info、warn、error、fatal、off。常用的有debug、info、warn、error四种。相信大家从字面意思上也能看出它们分别代表什么样的日志级别。
当我们看到上面的那条语句时,我们可能很想知道,日志信息到底输出到了什么地方?我们怎样才能控制日志输出的目的地?怎样讲Log4J应用到自己的程序中?
将Log4J应用到自己的程序中
下面是一段程序示例,想通过这段程序示例让大家对Log4J有些感性的认识。
package exerci.jp;
import org.apache.log4j.Appender;
import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.Layout;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.SimpleLayout;
publicclass Log4JTest {
publicstaticvoid main(String argv[]) {
// 为Log4JTest类创建一个Logger(日志写出器)
Logger logger = Logger(Log4JTest.class);
//定义一个日志格式化器
Layout layout = new SimpleLayout();
//定义一个Appender(日志输出的目的地),这个目的地是控制台,并将格式化器提供的格式应用到Appender以控制输出日志的格式
Appender appender = new ConsoleAppender(layout);
揆一//为日志写出器添加日志目的地
logger.addAppender(appender);
月杜甫
//设置Logger的级别,小于这个级别的日志信息将不会输出
logger.tLevel(Level.INFO);
// 因为 DEBUG级别小于 INFO级别,所以这条日志信息不会输出
logger.debug("This is debug.");
// 下面的日志信息将会输出
早上好日语谐音logger.info("This is an info.");
logger.warn("This is a warning.");
<("This is an error.");
logger.fatal("This is a fatal error.");
}
}
示例(1)
通过这个示例,大家很容易弄明白如何简单的使用Log4J,但可能对Logger、Appender、Layout这三个组件的认识还不是很明确。
Logr4j最常用的三个组件
•Logger - 日志写出器,供程序员输出日志信息
•Appender - 日志目的地,把格式化好的日志信息输出到指定的地方去o ConsoleAppender - 目的地为控制台的Appender
o FileAppender - 目的地为文件的Appender
•Layout - 日志格式化器,用来把程序员的logging request格式化成字符串o SimpleLayout - 对日志消息进行简单的格式化,格式为“级别 – 信息”
o HTMLLayout- 讲日志消息格式化成HTML格式
o PatternLayout - 用指定的pattern格式化logging request的Layout 下面这个图用来表述这三个组件之间的关系
任职期满考核结果
参照示例(1)中的程序,我可以将日志信息输出到控制台上,下面我们来分析一下输出的结果
图(1)
由于我们应用的是SimpleLayout,所以输出的日志信息格式为“级别– 信息”。可能大家认为这种日志的呈现形式太简陋了,我们换成HTMLLayout试一试。大家很快看到在控制台输出的东东像打开的HTML源文件一样。
为了亲眼目睹一下HTMLLayout要达到的效果,我们不妨将日志输出到一个文件,然后用浏览器打开。为了这么做,我们要把ConsoleAppender改成FileAppender。更改后代码如下:
publicclass Log4JTest {
publicstaticvoid main(String argv[]) throws IOException {
// 为Log4JTest类创建一个Logger(日志写出器)
Logger logger = Logger(Log4JTest.class);
//日志格式化器改为HTMLLayout
Layout layout = new HTMLLayout();
/
/改为FileAppender,目的地变成名为"test.html"的文件,同时添加HTMLLayout格式化器Appender appender = new FileAppender(layout, "test.html");
//为日志写出器添加日志目的地
logger.addAppender(appender);
//设置Logger的级别,小于这个级别的日志信息将不会输出
岑参逢入京使logger.tLevel(Level.INFO);
// 因为 DEBUG级别小于 INFO级别,所以这条日志信息不会输出
logger.debug("This is debug.");
// 下面的日志信息将会输出
logger.info("This is an info.");
logger.warn("This is a warning.");
<("This is an error.");
logger.fatal("This is a fatal error.");
}
}
示例(2)
运行一下,并用浏览器打开“test.html”文件,效果如图(2)
图(2)
为了让大家更清楚的认识Layout(日志格式化器)下面画出Layout模块的部分类图
图(3)
了解了以上信息后,大家可能还很不满足,因为无论是SimpleLayout还是HTMLLayout它们的格式化方式都是固定的,我们也许迫切需要能够设计自己的格式,并按照自己的格式将日志信息输出,那我们就来探讨一下PatternLayout吧。看一下下面的代码示例:
publicclass Log4JTest {
publicstaticvoid main(String argv[]) throws IOException {
// 为Log4JTest类创建一个Logger(日志写出器)
Logger logger = Logger(Log4JTest.class);
肉饼怎么做又软又好吃
//使用PatternLayout前先要设计一个格式,下面的格式是Hello:线程:优先级(占5个字符左对齐):类名:消息并换行
String pattern = "Hello:%t:%-5p:%c - %m%n";
//日志格式化器改为PatternLayout
Layout layout = new PatternLayout(pattern);
//改为FileAppender,目的地变成名为"test.html"的文件,同时添加HTMLLayout格式化器Appender appender = new ConsoleAppender(layout);
//为日志写出器添加日志目的地
logger.addAppender(appender);
//设置Logger的级别,小于这个级别的日志信息将不会输出
logger.tLevel(Level.INFO);
// 因为 DEBUG级别小于 INFO级别,所以这条日志信息不会输出
logger.debug("This is debug.");
// 下面的日志信息将会输出
logger.info("This is an info.");
logger.warn("This is a warning.");
<("This is an error.");
logger.fatal("This is a fatal error.");
}
}
示例(3)
具体的%*代表什么含义,请参考附件中的设置日志输出格式。
如果大家想用更个性化的日志格式,那就根据Layout的继承结构来编写新的Layout类吧。
配置文件的使用
可能大家不喜欢讲Log4J的配置写到代码中,以为这会影响原来的代码逻辑,是代码看起来比较混乱。而且如果在一个工程中会有很多的类,我们总不能在每个类中都把配置Log4J的代码写一遍吧,这是我们很自然的想到使用配置文件。
配置文件可以采用log4j.properties或l(二选一),而且它们的路径必须在classpath当中。下面是一个简短的程序示例。
log4j.properties文件内容如下:
log4j.appender.appender=org.apache.log4j.ConsoleAppender
log4j.appender.appender.layout=org.apache.log4j.PatternLayout
log4j.appender.appender.layout.ConversionPattern=%-4r %-5p [%t] %30c %3x - %m%n
Java程序文件为:
publicclass Log4JTest2 {
publicstaticvoid main(String argv[]) throws IOException {
// 为Log4JTest类创建一个Logger(日志写出器)
Logger logger = Logger(Log4JTest2.class);
// 因为 DEBUG级别小于 INFO级别,所以这条日志信息不会输出
logger.debug("This is debug.");
女老师丝袜
// 下面的日志信息将会输出
logger.info("This is an info.");
logger.warn("This is a warning.");
<("This is an error.");
logger.fatal("This is a fatal error.");
}
}
上面的log4j.properties文件也可以用下面的l文件替代。
<?xml version="1.0"encoding="UTF-8"?>
查看成绩<!DOCTYPE log4j:configuration SYSTEM"log4j.dtd">

本文发布于:2023-06-19 10:42:42,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1045462.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:日志   输出   信息   大家   级别   格式
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图