当前位置:首页 > 数据库 > 正文

log4j配置详解?log4j2 配置详解

log4j配置详解?log4j2 配置详解

大家好,今天小编来为大家解答log4j配置详解这个问题,log4j2 配置详解很多人还不知道,现在让我们一起来看看吧!log4j2是一个提供什么功能的工具包log4j2...

大家好,今天小编来为大家解答log4j配置详解这个问题,log4j2 配置详解很多人还不知道,现在让我们一起来看看吧!

log4j2是一个提供什么功能的工具包

log4j2是一个提供跨平台、简单、易用且功能强大的调试日志工具包,功能类似javalog4j功能。

ApacheLog4j是一个基于Java的日志记录工具。它是由CekiGülcü首创的,现在则是Apache软件基金会的一个项目。Log4j是几种Java日志框架之一。

log4j在初始化时会自动查找配置,然后配置自己。支持各种方式、各种类型的配置。

log42配置文件详解

log42配置文件是使用ApacheLog4j日志框架的XML格式文件,该文件用于定义记录器,它们将如何处理日志消息。

根据指定的日志记录级别,它还可以指定哪些消息将记录在哪里,也可以指定某些消息将被记录在特定的文件中。

它还可以指定消息的格式以及在消息中添加额外的信息,例如从哪个类中触发的日志消息。

log4j生成的文件编码格式

1.是UTF-8。2.这是因为UTF-8是一种通用的字符编码,可以表示世界上几乎所有的字符,包括中文、日文、韩文等。而log4j作为一个流行的日志记录工具,为了能够支持多种语言的日志记录,选择了UTF-8作为默认的文件编码格式。3.UTF-8编码格式具有以下优点:首先,它是一种变长编码方式,可以根据字符的不同长度进行编码,节省了存储空间;其次,它兼容了ASCII编码,可以在不影响原有ASCII字符的情况下表示其他字符;最后,UTF-8编码格式在互联网上得到广泛应用,被大多数操作系统和编程语言所支持,具有良好的兼容性和可移植性。因此,log4j选择了UTF-8作为生成的文件编码格式,以满足多语言环境下的日志记录需求。

如何配置SLF4J不同的日志实现

SLF4J是一套简单的日志外观模式的JavaAPI,帮助在项目部署时对接各种日志实现。 LogBack在运行时使用JMX帮助修改日志配置,在生产状态下无需重启应用程序。 SLF4J是简单的日志外观模式框架,抽象了各种日志框架例如Logback、Log4j、Commons-logging和JDK自带的logging实现接口。

它使得用户可以在部署时使用自己想要的日志框架。SLF4J是轻量级的,在性能方面几乎是零消耗的。 SLF4J没有替代任何日志框架,它仅仅是标准日志框架的外观模式。

如果在类路径下除了SLF4J再没有任何日志框架,那么默认状态是在控制台输出日志。 Logback是Log4j的改进版本,而且原生支持SLF4J(因为是同一作者开发的),因此从其它日志框架如Log4j或JDK的logging迁移到Logback是完全可行的。

由于Logback原生支持SLF4J,因此Logback+SLF4J的组合是日志框架的最佳选择,比SLF4J+其它日志框架的组合要快一些。而且Logback的配置可以是XML或Groovy代码。

注意一个重要的特性,Logback通过JMX修改日志配置(比如日志级别从Debug调整到INFO),可以从JMX控制台直接操作,无需重启应用程序。

log4j的配置文件

自动加载配置文件:

(1)如果采用log4j输出日志,要对log4j加载配置文件的过程有所了解。

log4j启动时,默认会寻找sourcefolder下的log4j.xml配置文件,若没有,会寻找log4j.properties文件。然后加载配置。配置文件放置位置正确,不用在程序中手动加载log4j配置文件。如果将配置文件放到了config文件夹下,在buildPath中设置下就好了。

若要手动加载配置文件如下:

(1)PropertyConfigurator.configure("log4j.properties")默认读取的是项目根目录的路径。此时的log4j.properties要放在项目目录下。

log4j.properties配置文件是在什么地方调用读取的呢

一般在项目中使用properties配置文件的时候都将相关的properties文件放在src目录下,在将该app打包生成jar后,相应的properties配置文件生...

一般在项目中使用properties配置文件的时候都将相关的properties文件放在src目录下,在将该app打包生成jar后,相应的properties配置文件生成在jar包中,这样的话要修改配置文件又要重新打jar包,那是相当的麻烦。

既然这么麻烦,你肯定想将配置文件放在其他的目录下,生成的jar包内不包含相应的配置文件,修改配置文件无需重新打包,没错,下面就是一种解决方案了。

读取jar包内配置文件:

InputStreamin=this.getClass().getClassLoader().getResourceAsStream("/configfilename.properties");

读取jar包外配置文件:

StringfilePath=System.getProperty("user.dir")+"/conf/configfilename.properties";

InputStreamin=newBufferedInputStream(newFileInputStream(filePath));

另外,如果app中使用到log4j.properties文件,默认的存放路径是src/log4j.properties,同上面一样,我想把log4j.properties放在其他目录中,这样一来,在修改log4j配置文件的时候无需重新打jar包。

在main函数第一行添加如下代码:

PropertyConfigurator.configure(System.getProperty("user.dir")+"/conf/log4j.properties");

关于log4j配置详解到此分享完毕,希望能帮助到您。

最新文章