- 浏览: 223581 次
- 性别:
- 来自: 烟台
文章分类
最新评论
-
KateAndNomi2333:
kunchong21 写道tinguo002 写道List l ...
ArrayList深拷贝的一种实现方法 -
kunchong21:
tinguo002 写道List list1 = new Ar ...
ArrayList深拷贝的一种实现方法 -
suihr:
你设置的操作系统的时区正确吗?
Tomcat5.5时区设置 -
xiao_Yao:
我用windows8 tomcat5.5无法 使用 呀
Tomcat5.5时区设置 -
hftgoodgood:
hftgoodgood 写道 ...
通用权限管理系统设计篇(三)——概要设计说明书
http://www.blogjava.net/flysky19/articles/98414.html
成功配置tomcat的log4j日志系统,格式:HTML+每天以yyyy-mm-dd.log命名的日志文件
一、引言:
实习单位让用log4j配置webapp的日志系统,要求产生的日志文件是html格式,并且是每天以yyyy-mm-dd日期格式命名的日志文件。
这个曾经让自己费神了一段时间,最近花了两天时间总算配置成功了!不过配置成功的是tomcat的,不是单个webapp的,现把步骤记录下来,晚上再配置webapp的。先写一步一步的操作,后面再讲解一些log4j的关键知识点。
二、一步一步配置tomcat log4j日志系统
第一步:下载log4j.jar,并把log4j.jar放入$CATALINA_HOME/common/lib.
第二步:新建log4j.properties文件,放到$CATALINA_HOME/common/classes/目录下.
第三步:写配置文件log4j.properties:
#log4j.properties
log4j.rootLogger=warn, A1
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.file=F:/UserWorkSpace/jiangcm/Tomcat 5.0/logs/tomcat_log_
log4j.appender.A1.DatePattern=yyyy-MM-dd'.html'
log4j.appender.A1.layout=org.apache.log4j.HTMLLayout
log4j.logger.org.apache=warn
注解:
1)你只需要修改这一行:
log4j.appender.R.File=F:/UserWorkSpace/jiangcm/Tomcat 5.0/logs/tomcat_log_
将路径修改为你的Tomcat的logs目录,如果你的系统环境配置了CATALINA_HOME环境变量,那么可以使用${catalina.home}/logs/tomcat_log_进行配置即可。
2)上面的log4j配置仅记录比较重要的日志(警告warning、错误error、致命错误fatal)到Tomcat的logs目录下的tomcat_log_ 文件中,每天晚上过0点的第一条信息会触发重命名tomcat_log_,将当前日期附加在tomcat_log_ 文件名中,并产生新的tomcat_log_ 文件。
3)使用FileAppender可以将log信息输出到文件中,但是如果文件太大了读起来就不方便了。这时就可以使用 DailyRollingAppender。DailyRollingAppender可以把Log信息输出到按照日期来区分的文件中。如上述log4j.properties配置文件就会每天产生一个html文件,每个html文件只记录当天的log信息。
4)设置了DailyRollingAppender 以后如果配置项里面设置了文件的最大值,那么应该去掉,否则可能不能产生以天为单位的日志。
5)Log4j的org.apache.log4j.DailyRollingFileAppender源码223行
scheduledFilename = fileName+sdf.format(new Date(file.lastModified()));
也就是说备份的日至文件都是文件名后面加上你所配的DatePattern格式化后的字符串。除非你自己写个appender。
6)上述log4j.properties生成的日志文件,名称格式如下:tomcat_log_2007-02-24.html;
注意:生成的第一个日志文件格式如下:tomcat_log_,即只是A1.file中设置的名称;生成的第二个日志文件之后的文件命名才会加上所配的DatePattern格式化后的字符串。
7)配置DailyRollingFileAppender格式的日志系统,如果要验证生成的日志文件结果,要注意一点,需要关闭tomcat,修改系统日期为第二天的日期,再重启tomcat,这样才能自动生成一个新的日志文件;因为要修改日期才能触发产生新的日志文件。
第四步:重启tomcat.
ok,现在就已经在tomcat中配置好log4j了。
第五步:验证
验证上述配置的log4j日志系统:
利用tomcat自带的web应用程序jsp-examples,现在配置好了日志系统,那么如果在jsp-examples这个web应用程序的.java文件中使用了日志,则IE访问这个web app的jsp文件时,就应该能够自动产生日志文件到配置的路径中。
步骤:
a)进入目录“F:\UserWorkSpace\jiangcm\Tomcat 5.0\webapps\jsp-examples\WEB-INF\classes\dates”;
b)修改JspCalendar.java文件,在这个文件中加上日志的代码,如下所示:
package dates;
import java.text.DateFormat;
import java.util.*;
import org.apache.log4j.Logger;
import org.apache.log4j.Level;
import org.apache.log4j.*;
public class JspCalendar {
Calendar calendar = null;
static Logger logger = Logger.getLogger(JspCalendar.class);
public JspCalendar() {
logger.debug("This is debug.");
logger.info("This is an info.");
logger.warn("This is a warning.");
logger.error("This is an error.");
logger.fatal("This is a fatal error.");
calendar = Calendar.getInstance();
Date trialTime = new Date();
calendar.setTime(trialTime);
}
public int getYear() {
return calendar.get(Calendar.YEAR);
}
……
}
注释:
加上的代码有两部分,一是构造一个logger对象,一是输出logger信息,如下所示,其他代码没动:
static Logger logger = Logger.getLogger(JspCalendar.class);
logger.debug("This is debug.");
logger.info("This is an info.");
logger.warn("This is a warning.");
logger.error("This is an error.");
logger.fatal("This is a fatal error.");
c)重新编译JspCalendar.java;
d)修改日期为2007-02-26;
e)重启tomcat;
f)在IE中输入“http://localhost:8086/jsp-examples/dates/date.jsp”,运行该jsp文件;
g)这时在目录“F:\UserWorkSpace\jiangcm\Tomcat 5.0\logs”下看到了新产生的日志文件:tomcat_log_2007-02-25.html.
ok!说明日志系统配置成功啦,啦~!!
三、遗留问题
3.1 上述配置的是tomcat的日志系统,应该是对tomcat下的所有webapp都起作用,现在自己只验证了jsp-examples这个webapp,还没有验证过其他的webapp。
3.2 配置的是tomcat的日志系统,输出的应该都只是tomcat的标准输入/输出信息等,感觉webapp的日志信息应该和tomcat的系统日志信息分开,但是应该怎么分开呢?如果对每个webapp单独配置日志系统,那么这些日志内容会输出到tomcat的系统日志中吗?
3.3 不需任何配置,tomcat5.0的默认日志目录“F:\UserWorkSpace\jiangcm\Tomcat 5.0\logs”下就有按日期产生的日志文件,文件命名格式如下:localhost_log.2007-02-26.txt,并且这个文件是自动生成的,上述配置在目录“F:\UserWorkSpace\jiangcm\Tomcat 5.0\logs”下生成了tomcat_log_2007-02-25.html文件,并且tomcat本身也自动生成了一个localhost_log.2007-02-26.txt文件,相当于自动生成了两个日志文件。
当然这两个日志文件的内容不同,tomcat_log_2007-02-25.html中的内容如下:
待贴图
而localhost_log.2007-02-26.txt的内容如下:
2007-02-26 14:03:21 StandardContext[/balancer]org.apache.webapp.balancer.BalancerFilter: init(): ruleChain: [org.apache.webapp.balancer.RuleChain: [org.apache.webapp.balancer.rules.URLStringMatchRule: Target string: News / Redirect URL: http://www.cnn.com], [org.apache.webapp.balancer.rules.RequestParameterRule: Target param name: paramName / Target param value: paramValue / Redirect URL: http://www.yahoo.com], [org.apache.webapp.balancer.rules.AcceptEverythingRule: Redirect URL: http://jakarta.apache.org]]
2007-02-26 14:03:22 StandardContext[/jsp-examples]ContextListener: contextInitialized()
2007-02-26 14:03:22 StandardContext[/jsp-examples]SessionListener: contextInitialized()
2007-02-26 14:03:22 StandardContext[/servlets-examples]ContextListener: contextInitialized()
2007-02-26 14:03:22 StandardContext[/servlets-examples]SessionListener: contextInitialized()
感觉就是localhost_log.2007-02-26.txt中是tomcat的系统日志,而omcat_log_2007-02-25.html中是.java中自己写的logger的内容。
那么,是不是tomcat5中系统日志就会自动按日生成,不需配置;开发人员如果需要日志系统,那么就在自己的webapp中配置一个,而不需要管tomcat的系统日志了???
3.4 tomcat_log_2007-02-25.html与localhost_log.2007-02-26.txt内容不同的原因有没有可能是因为:
自己的log4j.properties中设置apache的级别是warn:??
log4j.logger.org.apache=warn
刚验证了一下,好像没有关系,“log4j.logger.org.apache=warn”这句好像不仅对localhost_log.2007-02-26.txt无影响,而且对tomcat_log_2007-02-25.html的输出也无影响。
那么“log4j.logger.org.apache=warn”这句的作用是什么呢???
3.5 webapp中如何配置日志系统,并且把webapp的日志信息与tomcat自身的系统日志分开???
四、参考资料:
1.我想每一天都产生一个以"yyyy-mm-dd.log"命名日志文件,请问该怎么配置file选项,谢谢了!
http://community.csdn.net/Expert/TopicView3.asp?id=4788993
2.使用log4j为Tomcat输出日志
http://www.chinawin.net/myblog/archives/314-log4jTomcataeoeOE.html
1. 如果Tomcat当前正在运行,关闭Tomcat。
2. 从Apache的网站下载Commons Logging发行包。
3. 将压缩包中的commons-logging.jar解压缩到你Tomcat安装路径的common/lib目录中。
4. 从Apache的网站下载Log4j发行包。
5. 将压缩包中的log4j-1.2.12.jar解压缩到你Tomcat安装路径的common/lib目录中。
6. 在Tomcat安装路径的common/classes 创建log4j的配置文件log4j.properties(配置文件在随后一节)。
7. 重起Tomcat
3.在Web应用中使用log4j
http://www.3doing.net/forums/printpage.asp?BoardID=11&ID=184
注意:上面的load-on-startup应设为1,以便在Web容器启动时即装入该Servlet。log4j.properties文件放在根的properties子目录中,也可以把它放在其它目录中。应该把.properties文件集中存放,这样方便管理。
4.og4j日志文件路径的配置
http://wangluwww.spaces.live.com/blog/
解决log4j输出的日志文件的位置的配置问题
我一直希望自己的web应用的配置能够简化,最好的方式就是打个包后扔哪都能用,即使非得再做一些配置的话,也希望只是一些连接池的配置信息。这个目标在现在手头的这个项目中也几乎达到了,除了log文件的位置。
在log4j的配置文件中对于log输出的路径一向都是使用绝对路径,这样就导致在不同的机器上部署时都得重新定义一下log文件的输出位置。虽说费时不多,可对于我这种宁可少一事,不愿多一事的人来说,总是觉得有点郁闷。
踏破铁鞋无觅,得来不费功夫。不经意见看到了一个文档,介绍说log4j的配置文件支持windows的环境变量,格式类似velocity:${env},ok,问题解决:
一般来说我们会将一些初始化的信息放到web.xml中,以便在系统启动时就运行。循此思路,将log文件的位置放到webapp下面的任意处,如webapp/WEB-INF/conf/logs下面,则可以在log4j.properties文件中做如下定义:
log4j.appender.R.File=${webappHome}/WEB-INF/conf/logs/sysout.log
其中的${webappHome}即是通过System.setProperty("webappHome", webappHome);实现的,此操作可通过一初始的servlet进行,具体方法略。
5. Log4j优化
http://www.3doing.net/forums/printpage.asp?BoardID=11&ID=184
有多少人用Log4j的时候会在每一个Debug/Info之前加一个判断?
可能很多人都说了,这有什么关系,我在运行的时候是把Log Level设置成Error的。
那么请看下面这个代码:
String result;
...
...
...
logger.debug(”result is” + result );
再看看这个代码:
String result;
...
...
...
if(logger.isDebugEnabled())
{
logger.debug(”result is” + result );
}
把Log Level设置成ERROR,运行结果又区别吗?没有!!
程序的性能有区别吗?区别大了!!!
因为什么呢?
虽然第一段代码也不产生Log输出,但是debug()里面的字符串变量是实例化了,明白了吗?
这个就是为什么很多人抱怨Log4j占用很大CPU时间的原因了,尤其是在大循环的时候。
赶快在你的程序中加上这样的判断条件吧。
发表评论
-
eclipse下启动tomcat出现Setting property 'source' to 'org.eclipse.jst.jee.server: '错误的
2012-09-19 13:52 929eclipse下启动tomcat出现Setting pr ... -
java List remove 时的小问题
2011-11-16 17:33 1637From:http://hi.baidu.com/xia ... -
HP ProLiant DL380 G6 服务器 - 内存的插法详解
2011-11-15 14:05 2493HP ProLiant DL380 G6 服务器 - 内 ... -
Tomcat5.5时区设置
2011-10-21 11:00 2002项目中遇到Tomcat时间跟系统时间不一致的情况,在网上 ... -
记录tomcat控制台输出日志
2010-11-11 10:23 1721今天把用了2年的tomcat重新整了下,终于解决了日志的记录 ... -
关于img src值为空时,2次请求问题的深入调研
2010-08-25 14:19 1364http://hi.baidu.com/bdui/blog ... -
java String.getBytes()编码问题
2010-07-29 16:11 1676http://hi.baidu.com/miserce/b ... -
Java 中的位运算
2010-06-28 09:50 1081移位运算符 包括: “>> 右移 ... -
设置eclipse启动参数解决内存不足问题
2010-03-16 16:17 1996http://www.21jn.net/html/62/n-5 ... -
JAVA_高级特性(hashCode,clone,比较器,Class反射,序列化)
2010-02-03 10:06 1375http://blog.csdn.net/wjp5536509 ... -
com.mysql.jdbc.CommunicationsException: Communications link failure due to under
2010-01-16 14:08 2575com.mysql.jdbc.CommunicationsEx ... -
java术语(PO/POJO/VO/BO/DAO/DTO)
2010-01-13 16:01 959PO(persistant object) 持久对 ... -
Eclipse下插件安装
2009-11-09 14:09 934Eclipse plugin resource center ... -
Java/J2EE中文问题终极解决之道
2009-10-21 14:23 719Java/J2EE中文问题终极解 ... -
ArrayList深拷贝的一种实现方法
2009-09-16 11:29 15891大家应该理解浅拷贝和 ... -
ADO封装类实现文件
2009-09-14 15:51 1306http://developer.51cto.com 2 ... -
使用Java多线程实现任务分发
2009-09-14 10:28 1015使用Java多线程实现任 ... -
ExecutorService来进行线程池的方式实现多线程
2009-09-12 10:16 2170ExecutorService来进行线程池的方式实现多线程 ... -
openssl 生成pem 建立CA
2009-08-24 13:45 2301openssl 生成pem 建立CA 关 ... -
Java删除目录及目录下的所有文件
2009-08-21 15:45 2559Java删除目录及目录下的所有文件 java中删除目录事 ...
相关推荐
2. **配置全局 Log4j 属性文件**:在任意位置创建 `log4j.properties` 文件,并设置全局的日志级别、输出格式及存储路径等。通常会将该文件放置在 Tomcat 的 `conf` 目录下。 ```properties log4j.rootLogger=...
例如,可以设置为%d{yyyy-MM-ddHH:mm:ss.SSS}%p[%t]%c|%m%n来让日志格式和Log4j保持一致。 5. 配置特定包的日志级别:可以通过设置log4j.logger为特定包设置日志级别,比如com.xxxx、org.apache等,这里设置为WARN...
3. **配置Tomcat**:在`$CATALINA_HOME/lib`目录下添加`log4j-api.jar`和`log4j-slf4j-impl.jar`,这将使Tomcat使用Log4j2作为其内部的日志系统。 4. **排除其他日志实现**:确保你的应用中没有引入其他的日志实现...
创建一个`log4j.properties`或`log4j.xml`配置文件,指定日志级别、输出格式、日志文件位置等。以下是一个简单的`log4j.properties`示例: ```properties # log4j.properties log4j.rootLogger=INFO, FILE, CONSOLE...
如果Tomcat使用的是现代版本,可能还需要添加`tomcat-juli.jar`和`tomcat-juli-adapters.jar`,这些文件用于使Log4j与Tomcat的JULI日志系统兼容。 2. **配置Log4j**:创建一个`log4j.properties`或`log4j.xml`配置...
log4j.appender.FILE.DatePattern='.'yyyy-MM-dd ``` 这个配置将日志级别设置为INFO,使用DailyRollingFileAppender按天滚动日志文件,文件路径为指定位置,日志格式按照`ConversionPattern`定义,并且日志文件...
在Tomcat中配置Log4j,可以实现按照文件大小生成日志文件,如`catalina.out`,从而避免单个日志文件过大导致的管理不便。 首先,我们需要理解Log4j的工作原理。Log4j主要包括三个核心组件:Logger(日志器)、...
启动Tomcat,程序运行时,Log4j会根据配置文件生成日志文件。 通过以上步骤,你可以在Tomcat环境中成功地使用Log4j接管日志生成。记住,合理配置日志级别和输出位置,可以有效地辅助开发和维护,避免日志信息过于...
log4j.appender.FILE.DatePattern='.'yyyy-MM-dd'.log' # 每天生成一个新的日志文件 # 设置日志格式 log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.ConversionPattern=%d...
例如,配置中的`.'yyyy-MM-dd'`表示日志文件名将以年月日的形式后缀,如`app.2022-09-08.log`。 5. **日志级别与过滤**:通过配置,我们可以控制不同级别的日志输出,例如只记录ERROR级别的日志,减少日志量,或者...
`pattern`中的日期部分可以使用`java.text.SimpleDateFormat`的格式,比如`yyyy-MM-dd`,这样日志文件就会以`tomcat-uid-2022-06-01.log`的形式命名,每天一个新的文件。 如果使用Log4j,可以在`log4j.properties`...
Log4j提供了一种灵活的日志记录系统,它允许开发者控制日志输出的级别(如DEBUG、INFO、WARN、ERROR和FATAL),并且可以方便地定制日志格式和存储位置。这对于调试、性能分析和故障排查极为关键。 在Tomcat中配置...
通过 log4j,开发人员可以方便地控制日志消息的级别(如 debug、info、warn 等)、输出格式、以及日志消息的去向(控制台、文件等)。 #### 二、log4j 的核心组件 log4j 主要包含三个核心组件:`Logger`、`...
`Logback`由著名的`Log4j`创始人Ceki Gülcü创建,它提供了更高效的日志处理机制,并且功能更加强大,包括日志级别控制、日志格式化、日志归档等。在`Tomcat`中配置`Logback`,可以有效地控制`catalina.out`的大小...
log4j.appender.FILE.DatePattern='.'yyyy-MM-dd log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ``` 3. **整合...
log4j.appender.FILE.DatePattern='.'yyyy-MM-dd log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ``` 这个配置...
要使用Log4j替换Tomcat的默认日志系统,我们需要配置`logging.properties`文件。这个文件通常位于Tomcat的`conf`目录下。在该文件中,我们将JULI的日志处理器指向Log4j的实现,例如: ```properties handlers = org...
以下脚本主要备份的日志文件为tomcat的catalina.out、localhost_access_log.yyyy-mm-dd.log日志和项目的日志文件,其中项目的日志文件格式为”projectname-yyyy-mm-dd.log”,以下为备份脚本,具体的操作都有相应的...
`DatePattern`参数定义了日志文件名的日期模式,例如`'.'yyyy-MM-dd`表示每天的日志文件将带有当天的日期作为后缀。 #### 3. 验证配置 重启Tomcat服务器,检查`$CATALINA_HOME/logs`目录,应能看到按日期分割的...
首先,我们来看看标题提及的“Tomcat5.5日志管理log4j包文件”,这涉及到的是在Apache Tomcat 5.5版本中集成和配置开源日志框架log4j,以提升日志记录的效率和灵活性。 log4j是Apache软件基金会的一个项目,提供了...