首页 > 编程知识 正文

slf4j配置详解,kafka替换log4j

时间:2023-05-04 03:06:22 阅读:167515 作者:2120

Log4j是最常用的记录工具,在介绍其配置方法的同时,也说明其原理和使用方法。

1. XML配置

我觉得xml配置文件更清晰,所以从xml开始吧。 首先,我将展示配置最简单的log4j.xml

首先,让我们看一下放置在文件下的两个logger。 每个logger记录一个日志输入。 它们通过name进行区分,使用同一name的logger创建的日志必须位于同一日志文件中。 一个特殊的logger被称为root,它是一个不需要指定name,并且必定存在的logger。 为了与这里进行对照,配置了另一个logger test。

文件上方的appender对应于日志文件的输出,即写入哪个文件、使用什么格式等。 放置在此处的appender一个输出到控制台,另一个输出到指定的文件。

其实Log4j的核心概念就是这两个,可以看出logger和appender是引用关系。 一个logger可以输出到多个appender,一个appender可以被多个logger共同使用。

让我们看一下如何在Java中使用logger

import org.apache.log4j.Logger;

importorg.Apache.log4j.XML.DOM configurator;

公共类log4j test {

publicstaticvoidmain (string [ ] args ) {

DOM configurator.configure (log4j.XML );

//property configurator.configure (' log4j.properties );

logger root=logger.getrootlogger (;

logger test=logger.getlogger (' test );

system.out.print ln (root.getname );

system.out.print ln (test.getname );

root.info(rootlog );

test.info(testlog );

}

}

您可以看到Root Logger的名称是root,“root log”将输出到控制台,“Test Log”将写入test.log和控制台。 这里要说明的是,除root以外的所有logger都有additivity属性,缺省值为true,记录的日志将由root logger输出。

2 .属性配置

log4j.appender.console appender=org.Apache.log4j.console appender

log4j.appender.console appender.layout=org.Apache.log4j.pattern layout

log4j.appender.console appender.layout.conversion pattern=% m % n

log4j.appender.file appender=org.Apache.log4j.rolling file appender

log4j.appender.file appender.layout=org.Apache.log4j.pattern layout

log4j.appender.file appender.layout.conversion pattern=% m % n

log4j.rootLogger=DEBUG,consoleAppender

log4j.logger.test=DEBUG,fileAppender

与上述xml配置进行比较,很容易理解其含义。 不同的是,配置logger时必须指定Level。 在这里设定的是DEBUG。

此外,用于加载配置文件的类也不同,它们使用property configurator.configure (' log4j.properties )。

3 .代码配置

实际上,Log4j可以直接在代码中配置,而不使用配置文件。 与上述配置文件等效的代码配置如下

importorg.Apache.log4j.console appender;

import org.apache.log4j.Logger;

importorg.Apache.log4j.pattern layout;

importorg.Apache.log4j.rolling file appender;

公共类log4j test {

publicstaticvoidmain (string [ ] args ) {

consoleappenderconsoleappender=newconsoleappender (;

console appender.set name (console appender );

console appender.set layout (newpatternlayout (' % m % n ' );

console appender.activate options (;

rollingfileappenderfileappender=newrollingfileappender (;

file appender.set name (file appender );

fileappender.setfile('test.log );

文件appender.set layout (newpatternlayout (“% m % n”);

fileAppender.activateOptions (;

logger root=logger.getrootlogger (;

root.add appender (控制台appender;

logger test=logger.getlogger (' test );

test.add appender (文件appender;

system.out.print ln (root.getname );

system.out.print ln (test.getname );

root.info(rootlog );

test.info(testlog );

}

}

在此,请务必执行Appender的activateOptions ()方法。 不执行的话,Appender的设定不会生效。

log4j在4. WebApp上的配置

在Java Web项目的web.xml中添加用于加载Log4j配置文件的监听器

xmlns 3360 xsi=' http://www.w3.org/2001/XML架构-instance '

xsi :方案位置=' http://Java.sun.com/XML/ns/javaee

3358 Java.sun.com/XML/ns/javaee/we B- app _2_5. xsd '

MyApp

log4j配置

/WEB-INF/log4j.xml

org.spring framework.web.util.log4j config listener

这是一个比较简单的方法,但需要依靠Spring。 如果有其他方法的话欢迎留言。

最后,我将介绍如何在代码中使用logger。 实际上,Logger.getLogger('name '的name不一定是在配置文件中声明的logger。 您可以随时获取任何名称的逻辑。 但是,没有为此logger配置appender。 另外,addger经常可以看到代码中是这样写的

privateloggerlogger=logger.getlogger (log4j test.class;

或者

privateloggerlogger=logger.getlogger (this.getclass () );

这些logger的真正名称是具有完整软件包名称的参数类的名称,例如cn.gaofeihang.demo.Log4jTest。 这具有以下优点:通过配置日志格式,可以在创建日志时记录要日志的类名,从而更容易排除问题。

这是一种不太一样的部署说明,意在说明部署背后的一些原理和技巧。 关于log4j的各配置项目的使用方法,网上已经介绍了很多,所以省略说明。

Log4j详细介绍:单击此处

Log4j下载地址:单击此处

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。