本人因要写个很大的日志文件,而且格式等还能自定义.效率还有要求.后来看到了log4j的配置以及性能,就想用log4j来生成单独类的日志文件.因为
自己懒,不想再造轮子,也怕自己技术不够好,对大日志文件写的效率太烂.利用现有技术来实现是最好不过了.于是做了一系列的测试以后得到以下配置.有些地
方可能还不如人意.请大家多多包涵了.
第一种
package com.webgame.msg.manage;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import org.apache.log4j.Logger;
public class SendMsgStartup extends HttpServlet {
private final Logger logger = Logger.getLogger(SendMsgStartup.class);
public void init(ServletConfig servletConfig) throws ServletException {
try {
super.init(servletConfig);
logger.info("第一个info测试,测试加载的哪个文件");
Logger logger1 = Logger.getLogger(SendMsgStartup.class);
for (int i = 0; i < 10; i++) {
logger1
.debug(" debugdebugdebugdebugdebugdebugdebugdebugdebugdebugdebugdebugdebugdebugdebugdebugdebugdebugdebug ");
logger1
.error(" errorerrorerrorerrorerrorerrorerrorerrorerrorerrorerrorerrorerrorerrorerrorerrorerrorerrorerror ");
logger1
.info(" infoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfo ");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
log4j配置文件:
log4j.rootLogger=DEBUG,CONSOLE,FILE
#优先级从高到低分别是ERROR、WARN、INFO、DEBUG
#这里推荐选择二种,分别为ERROR:仅仅只记录错误名和位置;DEBUG:记录所有错误的详细信息
#在生产配置下,请关闭应用于控制台CONSOLE选项,仅启用FILE及可
log4j.addivity.org.apache=true
# 应用于控制台
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=DEBUG
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.Encoding=GBK
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d(line-%L)- %m%n
#应用于文件
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File=D:\\webGame\\game.log
log4j.appender.FILE.MaxFileSize=1MB
log4j.appender.FILE.MaxBackupIndex=100
log4j.appender.FILE.Encoding=GBK
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%d [%t] %-5p %c(line-%L) %-4r %x - %m%n
#这里为子日志文件配置
log4j.logger.com.webgame.msg.manage.SendMsgStartup=DEBUG,CONSOLE1,FILE1
log4j.addivity.org.apache=false
#
log4j.additivity.com.webgame.msg.manage.SendMsgStartup=false 这里如果设置为true,刚会把相关的日志文件,也写入到主日志文件里.
log4j.additivity.com.webgame.msg.manage.SendMsgStartup=false
# 应用于控制台
log4j.appender.CONSOLE1=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE1.Threshold=DEBUG
log4j.appender.CONSOLE1.Target=System.out
log4j.appender.CONSOLE1.Encoding=GBK
log4j.appender.CONSOLE1.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE1.layout.ConversionPattern=%d(line-%L)- %m%n
#应用于文件
log4j.appender.FILE1=org.apache.log4j.RollingFileAppender
log4j.appender.FILE1.Threshold=DEBUG
log4j.appender.FILE1.File=D:\\webGame\\blcs.msg.log
log4j.appender.FILE1.MaxFileSize=10MB
log4j.appender.FILE1.MaxBackupIndex=100
log4j.appender.FILE1.Encoding=GBK
log4j.appender.FILE1.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE1.layout.ConversionPattern=%d [%t] %-5p %c(line-%L) %-4r %x - %m%n
在红色的地方,就是配置说明,相关的配置会单独的写到blcs.msg.log
里.而不会写入到主日志文件里.
经过以上配置,SendMsgStartup
类里的所有日志信息都会写到一个文件里.
+++++++第一种++++++++++++++第一种++++++++++++++第一种++++++++++++++第一种+++++++
针对于第一种文件的配置,很郁闷的是,这个类里所有的日志都会写到blcs.msg.log
里.而实际上,可能一个些类我不想写到一个文件里.于是我改了一下配置.
+++++++第二种++++++++++++第二种++++++++++++第二种++++++++++++第二种+++++
package com.webgame.msg.manage;
import java.net.URL;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import com.webgame.test.TestLog4j;
public class SendMsgStartup extends HttpServlet {
private final Logger logger = Logger.getLogger(SendMsgStartup.class);
public void init(ServletConfig servletConfig) throws ServletException {
try {
super.init(servletConfig);
logger.info("第一个info测试,测试加载的哪个文件");
String BLCX_XML_CONFIG_FILEPATH = TestLog4j.class.getResource("/")
+ "xml/games/blcx.log4j.properties";//与第一种不同的地方
URL url = new URL(BLCX_XML_CONFIG_FILEPATH);
PropertyConfigurator.configure(url);
Logger logger1 = Logger.getLogger(SendMsgStartup.class);
for (int i = 0; i < 10; i++) {
logger1
.debug(" debugdebugdebugdebugdebugdebugdebugdebugdebugdebugdebugdebugdebugdebugdebugdebugdebugdebugdebug ");
logger1
.error(" errorerrorerrorerrorerrorerrorerrorerrorerrorerrorerrorerrorerrorerrorerrorerrorerrorerrorerror ");
logger1
.info(" infoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfo ");
}
logger.info("第一个info测试结束,测试加载的哪个文件");
} catch (Exception e) {
e.printStackTrace();
}
}
}
独立出配置文件:blcx.log4j.properties
#log4j.rootLogger=DEBUG,CONSOLE,FILE
#优先级从高到低分别是ERROR、WARN、INFO、DEBUG
#这里推荐选择二种,分别为ERROR:仅仅只记录错误名和位置;DEBUG:记录所有错误的详细信息
#在生产配置下,请关闭应用于控制台CONSOLE选项,仅启用FILE及可
log4j.logger.com.webgame.msg.manage.SendMsgStartup=DEBUG,CONSOLE1,FILE1
log4j.addivity.org.apache=false
log4j.additivity.com.webgame.msg.manage.SendMsgStartup=false
# 应用于控制台
log4j.appender.CONSOLE1=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE1.Threshold=DEBUG
log4j.appender.CONSOLE1.Target=System.out
log4j.appender.CONSOLE1.Encoding=GBK
log4j.appender.CONSOLE1.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE1.layout.ConversionPattern=%d(line-%L)- %m%n
#应用于文件
log4j.appender.FILE1=org.apache.log4j.RollingFileAppender
log4j.appender.FILE1.Threshold=DEBUG
log4j.appender.FILE1.File=D:\\webGame\\blcs.msg.log
log4j.appender.FILE1.MaxFileSize=10MB
log4j.appender.FILE1.MaxBackupIndex=100
log4j.appender.FILE1.Encoding=GBK
log4j.appender.FILE1.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE1.layout.ConversionPattern=%d [%t] %-5p %c(line-%L) %-4r %x - %m%n
+++++++第二种++++++++++++第二种++++++++++++第二种++++++++++++第二种+++++
类文件改成以下:
package com.webgame.msg.manage;
import java.net.URL;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import com.webgame.test.TestLog4j;
public class SendMsgStartup extends HttpServlet {
private final Logger logger = Logger.getLogger(SendMsgStartup.class);
public void init(ServletConfig servletConfig) throws ServletException {
try {
super.init(servletConfig);
logger.info("第一个info测试,测试加载的哪个文件");
String BLCX_XML_CONFIG_FILEPATH = TestLog4j.class.getResource("/")
+ "xml/games/blcx.log4j.properties";
URL url = new URL(BLCX_XML_CONFIG_FILEPATH);
PropertyConfigurator.configure(url);
Logger logger1 = Logger.getLogger(SendMsgStartup.class);
for (int i = 0; i < 10; i++) {
logger1
.debug(" debugdebugdebugdebugdebugdebugdebugdebugdebugdebugdebugdebugdebugdebugdebugdebugdebugdebugdebug ");
logger1
.error(" errorerrorerrorerrorerrorerrorerrorerrorerrorerrorerrorerrorerrorerrorerrorerrorerrorerrorerror ");
logger1
.info(" infoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfoinfo ");
}
logger.info("第一个info测试结束,测试加载的哪个文件");
} catch (Exception e) {
e.printStackTrace();
}
}
}
+++++++第二种++++++++++++第二种++++++++++++第二种++++++++++++第二种+++++
虽然做到了,logger.info("第一个info测试,测试加载的哪个文件");是打印在主日志文件里.
但是经过 PropertyConfigurator.configure(url); 后
包含logger.info("第一个info测试结束,测试加载的哪个文件");文件都打印在blcs.msg.log
文件里,很郁闷.
应该有更好的加载方法,不是从全局来加载的,不过已经完成了大部分的问题,这一个问题就放着了.因为对大功能已经不影响了.
分享到:
相关推荐
例如,`log4j.appender.mylog=org.apache.log4j.FileAppender`表示日志将写入文件。 - **Layout**:日志输出格式,如HTML、Simple、TTCC或PatternLayout。PatternLayout允许自定义输出格式,如`%m`输出消息,`%p`...
log4j.rootLogger=debug,CONSOLE,testfile,A1,MAIL ################### # Console Appender ################### log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.Target=...
本话题将深入探讨如何使用Log4j中的DailyRollingFileAppender配置来自动删除前N天的日志,以便保持日志文件的大小和数量在可控范围内。 首先,DailyRollingFileAppender是Log4j中的一个Appender实现,它按照日期...
log4j2配置文件,按照文件大小划分日志,保存日期天数内的日志,指纹日志命名规则,日志输出等级等功能
在Tomcat中配置Log4j,可以实现按照文件大小生成日志文件,如`catalina.out`,从而避免单个日志文件过大导致的管理不便。 首先,我们需要理解Log4j的工作原理。Log4j主要包括三个核心组件:Logger(日志器)、...
- `log4j.appender.ROLLING_FILE.MaxFileSize=10KB`:设置单个文件的最大大小为10KB。 - `log4j.appender.ROLLING_FILE.MaxBackupIndex=1`:设置备份文件的最大数量为1个。 - `log4j.appender.ROLLING_FILE.layout=...
《深入理解Log4j:构建高效日志管理体系》 在软件开发中,日志系统扮演着至关重要的角色,它能够帮助开发者追踪程序运行状态、定位错误、排查问题以及进行性能分析。Log4j,作为Java领域中最流行的日志框架之一,因...
本文将详细介绍如何在Android Studio中使用log4j库来记录日志,并实现按照日志文件大小自动滚动的功能,以及如何进行日志内容的格式化输出。 首先,log4j是一款广泛使用的日志记录框架,它提供了灵活的日志配置和...
这篇博客文章“log4j日志配置”很可能是关于如何配置Log4j以满足特定的日志需求,特别是涉及到`DailyRollingFileAppender`,这是一个将日志输出到按日期滚动的文件中的类。 `DailyRollingFileAppender`是Log4j的一...
10. **日志切割与归档**:Log4j可以配置自动滚动日志文件,比如按日期或大小切割,防止单个日志文件过大,同时支持归档旧的日志文件。 在使用Log4j记录Debug日志时,确保项目中引入了相应的Log4j库,并正确配置了`...
首先,要在项目中启用Log4j,需要创建一个名为`log4j.properties`的配置文件,将其放在`classes`目录下。这个文件用于定义Log4j的行为,包括日志的级别、输出目的地、格式等。 1. **配置根Logger** 根Logger是Log4...
本资料主要包含了Log4j的相关jar包和配置文件,下面我们将详细讨论Log4j的关键概念、配置以及其在实际项目中的应用。 1. **Log4j组件** - **Logger**: 日志的核心组件,负责生成日志事件。开发人员通过创建Logger...
2. **日志文件管理**: 可以配置Log4j定期滚动日志文件,避免单个文件过大。同时,也可以设定日志文件的最大数量,以防止磁盘空间耗尽。 3. **性能考虑**: 在Android设备上,频繁的日志记录会影响性能。因此,需要...
在Log4j的上下文中,`log4j.dtd`是Log4j配置文件(通常命名为`log4j.properties`或`log4j.xml`)的DTD,它定义了配置文件中可以使用的元素、属性及其结构,确保配置文件的合法性。 在Log4j的配置文件中,我们可以...
- `File`:将日志写入文件,如`log4j.appender.File=org.apache.log4j.DailyRollingFileAppender`,`log4j.appender.File.File=logs/app.log`定义了文件名和路径。 - `RollingFileAppender`:按日期或大小滚动日志...
log4j提供日志文件滚动和归档功能,比如`DailyRollingFileAppender`可以按照日期切割日志,避免单个日志文件过大。 8. **与其他框架集成** log4j与其他许多Java框架如Spring、Struts等具有良好集成,可以在这些...
Log4j是Apache组织推出的一个开源的日志框架,用于简化Java应用中的日志记录工作。Log4j提供了灵活的日志记录机制,允许开发者根据需求调整日志信息的级别、格式以及输出方式等。 ##### 1.1 日志级别 在Log4j中,...
WAS 上 log4j 日志不能...解决 WAS 上 log4j 日志不能输出(ibatis)sql 语句的问题需要改变 WAS 的默认 LogFactory 实现类,使其使用 log4j 框架下的 LogFactory 实现类,并且需要正确配置 log4j.properties 文件。
**日志工具在IT开发中的重要性** 在IT行业中,日志记录是系统维护和问题排查的关键工具。它能够帮助开发者追踪...通过理解和熟练使用Log4j,开发者可以更有效地管理和利用日志,为系统的稳定性和可靠性提供有力支持。
**Log4j日志包**是Java开发中广泛使用的日志记录工具,它为应用程序提供了灵活的日志记录功能。在Java编程中,日志是非常重要的一部分,它可以帮助开发者追踪程序运行状态,定位错误,以及进行性能分析。Log4j是由...