log4j的日志配置
1. 配置记录器(logger)
Log4j的记录器包含两种,一个根记录器它必须且永远存在,且不能通过名字检索或引用,在配置文件中,根记录器定义方法如下:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
注:Level是记录器的级别,它是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别:ERROR、WARN、INFO、DEBUG( DEBUG < INFO < WARN < ERROR < FATAL)
如果一条log信息的级别,大于等于记录器的级别值,那么记录器就会记录它。例如level被设置为INFO级别,那么应用程序中所有的DEBUG的日志信息将不被打印出来。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。
appenderName是输出源的名字,它指定日志信息输出到哪个地方。您可以为一个记录器指定多个输出源。
配置日志信息输出(Appender)
log4j 还允许日志记录请求打印到多个输出目的地,按 log4j 的叫法是输出源。一个记录器可以有多个输出源。一条log信息如果可被这个记录器处理,则该记录器会把这条信息送往每个它所拥有的输出源,以及层次结构中更高级的输出源。例如,根记录器以控制台作为输出源,则所有可被纪录的日志都将至少打印到控制台。
配置日志信息输出源,其语法如下:
log4j.appender.appenderName = fully.qualified.name.of.appender.class log4j.appender.appenderName.option1 = value1 … log4j.appender.appenderName.option = valueN
Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
org.apache.log4j.SocketAppender (Socket)
org.apache.log4j.NtEventLogAppender (NT的Event Log)
org.apache.log4j.JMSAppender (电子邮件)
2. 配置日志信息的格式(layout)
其语法如下:
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class log4j.appender.appenderName.layout.option1 = value1 … log4j.appender.appenderName.layout.option = valueN
其中,Log4j提供的layout包含以下几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局)
org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
如果采用了PatternLayout, 则Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下:
%m 输出代码中指定的消息
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
例子:建一个名为demo数据库,建一个表T_Syslog。如下:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[T_Syslog]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[T_Syslog] GO CREATE TABLE [dbo].[T_Syslog] ( [syslogID] [numeric](18, 0) IDENTITY (1, 1) NOT NULL , [logType] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL , [menuCode] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , [content] [varchar] (1000) COLLATE Chinese_PRC_CI_AS NULL , [uDate] [datetime] NOT NULL ) ON [PRIMARY] GO
log4j.properties
log4j.rootLogger=info,db,logone #日志输出到控制台 log4j.appender.logone=org.apache.log4j.ConsoleAppender log4j.appender.logone.layout=org.apache.log4j.PatternLayout #日志的输出格式 log4j.appender.logone.layout.ConversionPattern=%d{yy-MM-dd HH\:mm\:ss} %5p %c{1}\:%L - %m%n #每天生成一个新的日志 log4j.appender.db=org.apache.log4j.DailyRollingFileAppender #路径 log4j.appender.db.File=/logs/syslog.log log4j.appender.db.Append = true log4j.appender.db.layout=org.apache.log4j.PatternLayout #日志的输出格式 log4j.appender.db.layout.ConversionPattern=%d{yyyy.MM.dd HH\:mm\:ss} %p %c{1}(%L)\:? %m%n #配置数据源 log4j.appender.db=org.apache.log4j.jdbc.JDBCAppender log4j.appender.logFtwo.BufferSize=10 log4j.appender.db.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver log4j.appender.db.URL=jdbc:sqlserver://192.168.0.116:1433;databaseName=market log4j.appender.db.user=sa log4j.appender.db.password=sa #将日志写入数据库 log4j.appender.db.sql=insert into T_Syslog (menuCode,logType,content) values ('%c','%p','%l,%m')
Log4jUtil.java
import org.apache.log4j.Logger; public class Log4jUtil{ private static Logger log=Logger.getLogger(Log4jUtil.class.getClass()); public static void main(String[] args) { log.debug("12312321321"); log.info("1231"); log.error("1231231"); } }
相关推荐
这是一个简单的系统日志管理,通过使用Apache的这个开源项目,可以方便的解决我们的日志,它可以输出日志到数据库,文件,邮箱..等。
在Tomcat中,Log4j可以用来代替默认的日志系统,提供更精细化的日志控制和更好的日志分析能力。 压缩包中的"**log4j.properties**"文件是Log4j的配置文件,用于定义日志的输出级别、格式、目的地等。配置文件中的...
Log4j是Apache提供的一款广泛使用的日志框架,它提供了丰富的配置选项,允许开发者灵活地控制日志输出。当我们面对特定项目需求,比如需要自定义日志文件名和日志输出格式时,Log4j同样提供了相应的解决方案。 首先...
在使用 Apache Tomcat 作为服务器时,合理配置日志框架(如 Log4j)能够极大地提高开发效率和系统的可维护性。本文将详细介绍两种常见的 Log4j 配置方式:Tomcat 级别的统一日志管理和每个 web 应用分别配置 Log4j,...
然而,由于Android系统对第三方库的限制,直接在Android工程中使用Log4j需要一些额外的步骤。本文将详细讲解如何在Android项目中集成和使用Log4j。 首先,我们需要理解Log4j的基本概念。Log4j主要包括三个核心组件...
Log4j2是Apache软件基金会开发的日志框架Log4j的升级版,它具有更高的性能、灵活性和可配置性。Log4j2支持多种日志记录级别(如DEBUG、INFO、WARN、ERROR),并允许通过XML、JSON、YAML或纯Java配置文件进行灵活配置...
在“log4j按功能保存日志”的场景中,我们通常会利用Log4j的配置灵活性,将不同功能的日志分别写入不同的文件,以便于后期分析、排查问题和监控系统状态。 1. **Log4j基本概念** - **Logger**: 日志记录器,是Log4...
3. 应用程序可能加载了其他地方的Log4j配置,例如系统级的Log4j配置。 总的来说,处理Log4j的初始化警告,关键在于正确配置和引入Log4j依赖,以及在需要使用日志的地方正确初始化logger。确保配置文件可用且路径...
**日志系统在软件开发中扮演着至关重要的角色,它能帮助开发者跟踪程序运行...同时,不断学习和探索log4j的高级特性,如异步日志、MDC(Mapped Diagnostic Context)等,可以进一步提升日志系统的实用性和可维护性。
理解Log4j2的配置和使用是每个Java开发者必备的技能,这对于日后的故障排查和系统维护至关重要。在实际应用中,你可以根据需求调整配置,例如增加日志过滤规则、添加更多的日志输出目标,或者改变日志格式等。
综上所述,"spring简单注解+log4j记录日志"这个主题涵盖了Spring框架中的注解使用、Log4j日志系统以及AOP的应用。通过学习这些内容,初学者可以更好地理解和实践Spring框架,同时提高代码的可维护性和调试效率。在...
Log4j是一个广泛使用的Java日志记录框架,它允许开发者在应用程序中轻松地记录各种级别的日志信息,如DEBUG、INFO、WARN、ERROR等。在2021年底,一个重大的安全漏洞(CVE-2021-44228)被发现在Log4j2的早期版本中,...
在 MyBatis 中,我们通常会依赖日志框架如 Log4j、Logback 或 JDK 内置的日志系统。Log4j 以其强大的功能和灵活性深受开发者喜爱。首先,确保你的项目已经包含 Log4j 的依赖,如果是 Maven 项目,可以在 `pom.xml` ...
使用Slf4j集成Log4j2构建项目日志系统的完美解决方案 Slf4j是简单的日志外观(Facade)模式,它提供了统一的日志接口,使得用户可以选择不同的日志实现。Slf4j的出现使得日志系统的开发变得更加灵活和便捷。Log4j2...
通过`log4j.properties`或`log4j.xml`配置文件,可以定制日志输出的级别、目的地和格式,从而满足不同项目的需求。在实际开发中,正确地使用和配置`log4j`能显著提升问题排查和系统监控的效率。
3. **配置Tomcat**:在`$CATALINA_HOME/lib`目录下添加`log4j-api.jar`和`log4j-slf4j-impl.jar`,这将使Tomcat使用Log4j2作为其内部的日志系统。 4. **排除其他日志实现**:确保你的应用中没有引入其他的日志实现...
在IT行业中,日志记录是调试和监控应用程序的关键部分,而Log4j是Java平台广泛使用的日志框架。本文将详细讨论如何解决Log4j日志文件出现的乱码问题。 首先,我们要理解Log4j的工作原理。Log4j允许开发者自定义日志...
Log4j提供了一个灵活且高效的日志系统,允许开发者自定义日志级别、输出格式和存储位置。 1. **日志级别**:Log4j支持多种日志级别,包括TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF。其中,DEBUG用于调试信息,...
在Android环境中,由于系统默认的日志记录器(Logcat)有一些限制,如日志长度、级别控制等,因此,引入log4j可以提供更高级别的控制和定制能力。 1. **集成log4j到Android项目** 要在Android项目中使用log4j,...