通过代码动态创建一个Logger和Appender
LoggerRepository repository = LogManager.getLoggerRepository(); Logger dbossClientLogger = repository.getLogger("com.duitang.dboss.client"); dbossClientLogger.setAdditivity(false); dbossClientLogger.setLevel(Level.INFO); DailyRollingFileAppender appender = new DailyRollingFileAppender( new PatternLayout( "%d{yyyy-MM-dd HH:mm:ss} [%p] %c %x - %m%n"), "/duitang/logs/usr/japa/dboss.log", "yyyy-MM-dd"); dbossClientLogger.addAppender(appender);
log4j的几个问题:
1. spring如何初始化log4j?
2. 不使用spring如何初始化log4j?
3. log4j的logger和appender如何定义?
spring 初始化流程
1.org.springframework.web.util.Log4jConfigListener
2.org.springframework.util.Log4jConfigurer.initLogging()
3.调用log4j的入口
org.apache.log4j.xml.DOMConfigurator.configure(url)
或
org.apache.log4j.xml.PropertyConfigurator.configure(url)
RollingFileAppender和DailyRollingFileAppender:
log4j提供RollingFileAppender和DailyRollingFileAppender将日志记录输出到文件。RollingFileAppender按log文件最大长度限度生成新文件,DailyRollingFileAppender按日期生成新文件。
log4j.rootCategory=INFO, CONSOLE,R log4j.appender.R=org.apache.log4j.RollingFileAppender log4j.appender.R.File=${catalina.base}/logs/portal.log log4j.appender.R.Encoding=GBK log4j.appender.R.MaxFileSize=256KB log4j.appender.R.Append=true log4j.appender.R.MaxBackupIndex=10 log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%-d %t %-5p [%c{1}:%L] %m%n
上面是使用RollingFileAppender的写法,将会在Tomcat的logs目录下,生成portal.log文件,当文件大小超过256KB时,将原来的文件更名为portal.log.1,再使用portal.log接收新的日志记录。
log4j.appender.R.MaxBackupIndex=10表示只保存10个备份文件。
下面是使用DailyRollingFileAppender的写法,配置完成的当天, 会在Tomcat的logs目录下,生成名为portal.log的文件,比如今天是2010-01-13, 到明天这个文件将更名为portal.log2010-01-13.log
log4j.rootCategory=INFO, CONSOLE,DailyRolling log4j.appender.DailyRolling=org.apache.log4j.DailyRollingFileAppender log4j.appender.DailyRolling.File=${catalina.base}/logs/portal.log log4j.appender.DailyRolling.DatePattern=yyyy-MM-dd'.log' log4j.appender.DailyRolling.layout=org.apache.log4j.PatternLayout log4j.appender.DailyRolling.layout.ConversionPattern=%-d %t %-5p [%c{1}:%L] %m%n
logger的additivity
它是 子Logger 是否继承 父Logger 的 输出源(appender) 的标志位。具体说,默认情况下子Logger会继承父Logger的appender,也就是说子Logger会在父Logger的appender里输出。若是additivity设为false,则子Logger只会在自己的appender里输出,而不会在父Logger的appender里输出。
相关推荐
Log4j2是一个继Log4j之后的日志系统,旨在提供更高效的性能、丰富的日志配置选项和动态日志管理。2.11.1版本修复了一些已知问题,增强了安全性和稳定性,确保了在各种复杂环境下的可靠运行。 1. **Log4j2 API (log4...
Log4j,作为Apache软件基金会的一个开源项目,是Java世界中最受欢迎的日志框架之一,其1.2.17版本因其稳定性和广泛兼容性而被广泛应用。本文将围绕“log4j-1.2.17.jar”这一核心组件,深入探讨其功能、配置以及在...
Log4j 1.2.15是1.x系列的一个稳定版本,虽然现在已经有Log4j 2.x版本,但1.2.x系列仍被广泛使用。 二、主要组件 1. **Logger**:日志记录器是Log4j的核心,它是整个日志系统的入口。每个应用程序可以有多个Logger...
例如,通过以下代码创建一个名为"DEBUG"的日志器: ```java import org.apache.log4j.Logger; public class MyClass { private static Logger logger = Logger.getLogger(MyClass.class); // ... } ``` 三、...
- 在代码中引入Log4j API,创建Logger实例,并调用相关方法记录日志。 5. **安全性** - 在Log4j 2.0-alpha1版本之后,Log4j经历了多个版本更新,修复了多个安全漏洞,如著名的Log4Shell漏洞(CVE-2021-44228)。...
Log4j是一款广泛使用的日志记录框架,它的最新版本log4j-2.15.0-rc2针对之前的版本进行了诸多优化和安全改进。SpringBoot,作为Spring框架的轻量级实现,以其便捷的起步配置和内置服务器特性,已经成为Java开发者的...
Apache Log4j是Java平台上的一个著名日志框架,它为开发者提供了灵活的日志记录功能。Log4j 2.9.1版本是该框架的一个更新版本,旨在提高性能、可扩展性和安全性。这个压缩包包含了两个部分:`apache-log4j-2.9.1-bin...
Apache Log4j 2.3 是一个广泛使用的Java日志框架,它提供了强大的日志记录功能,便于开发者在应用程序中追踪、控制和调试信息。这个jar包是专门为Java开发人员设计的,允许他们灵活地控制日志信息的输出格式、级别和...
3. 创建一个Log4j配置文件(如log4j2.xml或log4j2.properties),定义日志级别、Appender和Layout。 4. 在你的Java代码中初始化Log4j,并使用Logger类记录日志。 举例来说,一个简单的`log4j2.xml`配置文件可能如下...
然而,值得注意的是,Log4j曾爆出严重的CVE-2021-44228漏洞,也被称为Log4Shell,这是一个远程代码执行漏洞,影响了大量使用Log4j的系统。因此,即使使用的是2.9.1版本,也需要时刻关注最新的安全更新,以防类似的...
在Web应用中,如使用的是Servlet环境,可以通过在`web.xml`中配置`ContextLoaderListener`来加载Log4j配置,同时,我们还可以创建一个Servlet,当接收到特定请求时,更新Log4j配置。 ```xml <!-- web.xml 示例 --> ...
Apache Log4j是Java平台上的一个著名日志记录框架,它允许开发者在应用程序中方便地进行日志输出,便于调试、监控和问题排查。标题中的"apache-log4j-1.2.15.jar"指的是Log4j的一个特定版本,即1.2.15。这个版本发布...
总结来说,Log4j作为一个强大的日志框架,其强大的功能和高度可定制性使得它在Java项目中占据着重要地位。正确理解和使用log4j-1.2.16.jar,不仅可以提升开发效率,还能为项目的稳定性和维护性提供有力保障。通过...
《Log4j到Log4j2的升级指南》 在日志管理领域,Log4j一直扮演着重要的角色,尤其在Java开发中,它作为一款强大的日志记录框架,为...因此,对于正在使用Log4j的项目来说,考虑升级到Log4j2是一个值得考虑的选择。
例如,Log4j 2支持更丰富的插件体系、异步日志处理和动态日志配置,SLF4J则是一个日志抽象层,允许开发者在不修改代码的情况下切换不同的日志实现。 总结,Log4j 1.2.14作为经典的日志框架,其易用性和灵活性在Java...
Apache Log4j是Java平台上的一个著名日志记录框架,广泛应用于各种Java应用程序中,包括服务器、Web应用、企业级软件等。Log4j 1.2.16是该框架的一个版本,提供了丰富的日志功能,允许开发者灵活地控制日志信息的...
例如,使用log4j2时,创建logger对象的代码会变为`Logger logger = LogManager.getLogger(MyClass.class);`。 **桥接包** 在实际项目中,可能同时存在log4j、SLF4J和log4j2的依赖,这时桥接包就显得尤为重要。例如...
安全方面,Log4j 2.14.1版本修复了过去的安全漏洞,特别是著名的Log4Shell漏洞(CVE-2021-44228),这是一个远程代码执行漏洞,影响了大量使用Log4j的系统。更新到最新版本对于保持系统的安全性至关重要。 总之,...
Apache Log4j是Java平台上的一个著名日志记录框架,其1.2.17版本是该框架的一个历史版本。Log4j为开发者提供了一种高效、灵活且强大的日志记录解决方案,它允许应用程序根据不同的日志级别(如DEBUG、INFO、WARN、...