分类:
2010-03-09 16:17:32
因为一些特殊的原因,jobss前端不能加载nginx,或apache之类的服务,但是又要针对站点的日志文件进行分析,我们一般的日志分析工具,webalizer,awstats、webstrends都不能分析jobss下的server.log日志文件,这里我先了解一下jboss下的日志文件系统(log4j.xml)。
log4j是一个优秀的开源的java日志系统,jboss内部也集成了它,在jboss下默认的只是对server做了每日日志,并没有对你部署的项目进行每日的日志构建,但我们可以通过修改log4j.xml文件来实现。log4j.xml 文件在jboss安装目录下的server\default\conf下,打开log4j.xml文件
这是log4j默认的配置,我们先熟悉一下
参数都以%开始后面不同的参数代表不同的格式化信息(参数按字母表顺序列出):
%c 输出所属类的全名,可在修改为 %d{Num} ,Num类名输出的围 如:"org.apache.elathen.ClassName",
%C{2}将输出elathen.ClassName
%d 输出日志时间其格式为 %d{yyyy-MM-dd HH:mm:ss,SSS},可指定格式 如 %d{HH:mm:ss}
%l 输出日志事件发生位置,包括类目名、发生线程,在代码中的行数
%n 换行符
%m 输出代码指定信息,如info(“message”),输出message
%p 输出优先级,即 FATAL ,ERROR 等
%r 输出从启动到显示该log信息所耗费的毫秒数
%t 输出产生该日志事件的线程名
输出方式是:每天一个日志文件>
上面是jboss下log4j的默认配置,对jboss的server进行日志记录,接下来我们添加web项目的日志,在log4j.xml
文件中把下面的配置信息加上去就可以了
jboss的日志纪录方式有2种:
1、按日期进行纪录,
....................................................................................
..................................................................................
2、按日志文件大小进行纪录
……………………………………………………………
…………………………………………………………
让jboss生成可以分析的日志格式
修改jboss目录下\server\default\deploy\jbossweb-web.deployer\server.xml文件加入
prefix="localhost_access_log." suffix=".log"
pattern="%h %l %u %t %r %s %b"
timestamp="true"
directory="/backup/logs" resolveHosts="true" />
生成的日志文件,格式与标准的web server日志文件相同。可以使用用日志分析工具对日志进行分析,跟踪页面点击次数、用户会话的活动等。
其中具体配置参数如下所示:
className |
实现的Java类名。必须被设置成org.apache.catalina.valves.AccessLogValve。 |
directory |
存放日志文件的目录,可以是相对路径或者绝对路径。如果使用相对路径,是指相对于 $CATALINA_HOME的路径。如果不指定directory属性,缺省值是“logs”(相对于 $CATALINA_HOME) |
pattern |
需要记录的请求/响应不同信息域的格式布局。如果是“common”或者“combine”,说明选择标准格式。下面会有关于配置这个属性的更多信息。 |
prefix |
日志文件名的前缀。如果没有指定,缺省值是“access_log.”。如果不想使用前缀,使用长度为0的字符串。
|
resolveHosts |
将远端主机的IP地址通过DNS查询转换成主机名,设为true。如果为false,忽略DNS查询,报告远端的IP地址。
|
suffix |
日志文件名的后缀。如果没有指定,缺省值是“”。如果不想使用后缀,使用长度为0的字符串。
|
rotatable |
缺省值为true,用来决定日志是否翻转的标志。如果为false,日志文件永远不翻转,并且忽略fileDataFormat。要谨慎使用。
|
condition |
打开条件日志。如果设置了这个属性,只有在ServletRequest.getAttribute()是null的时候,才会为请求创建日志。比如,如果condition设为junk,则只有在Servlet.getAttribute("junk")==null的时候,才会记录这个请求。使用过滤器,可以很容易设置(或者取消设置)不同请求的属性。 |
fileDateFormat |
允许在日志文件名称中使用定制的日期格式。日志的格式也决定了日志文件翻转的频率。如果想每个小时翻转一次,将这个值设为yyyy-MM-dd.HH |
pattern属性值由字符串常量和pattern标识符加上前缀"%"组合而成。pattern标识符加上前缀"%",用来代替当前请求/响应中的对应的变量值。目前支持如下的pattern:
这样我们生成的日志就可以被一些日志分析工具所分析,但是首先要明确一点,当我们把后台日志和前台日志都打印出来后,对于系统的影响肯定是有的,所以一般建议,jboss最好apache,nginx等服务一起使用,让他们来产生分析日志。
参考了http://blog.chinaunix.net/u/26978/showart_531103.html