Logj是Apache的一个开放源代码项目通过使用Logj我们可以控制日志信息输送的目的地是控制台文件GUI组件甚至是套接口服务器NT的事件记录器UNIX Syslog守护进程等我们也可以控制每一条日志的输出格式通过定义每一条日志信息的级别我们能够更加细致地控制日志的生成过程最令人感兴趣的就是这些可以通过一个配置文件来灵活地进行配置而不需要修改应用的代码
如此强大的优越性实际上手并不难尤其在spring框架下使用logj更是容易下面介绍一下spring下的logj应用
当然先要下载相应的jar包(logjjar)
首先是webxml的配置在webxml中加入如下配置
<contextparam>
<paramname>logjConfigLocation</paramname>
<paramvalue>/WEBINF/props/logjproperties</paramvalue>
</contextparam>
<contextparam>
<paramname>logjRefreshInterval</paramname>
<paramvalue></paramvalue>
</contextparam>
<listener>
<listenerclass>
orgspringframeworkwebutilLogjConfigListener
</listenerclass>
</listener>
说明在上文的配置里在上文的配置里LogjConfigListener会去WEBINF/props/logjpropeties 读取配置文件;开一条watchdog线程每秒扫描一下配置文件的变化(这样在web服务启动后再去修改配置文件也不用重新启动web服务了);并把web目录的路径压入一个叫webapproot的系统变量(webapproot将在logjproperties文件中使用)
接下来是logjproperties配置文件了把它放在WEBINF/props下具体配置如下
#logjrootLogger = [ level ] appenderName appenderName
logjrootLogger = INFO console R
#level=INFOall can be output
#console is set to be a ConsoleAppender
nsole = orgapachelogjConsoleAppender
#console have four patterns
#orgapachelogjHTMLLayout
#orgapachelogjPatternLayout
#orgapachelogjSimpleLayout
#orgapachelogjTTCCLayout
nsolelayout = orgapachelogjPatternLayout
#define the output type
nsolelayoutConversionPattern = %d{yyyyMMdd HH:mm:ss} [%c][%p] %m%n
#file is set to output to a extra file
logjappenderR = orgapachelogjRollingFileAppender
#the absolute route of the logj file
logjappenderRFile = ${webapproot}/logtxt
#the size
logjappenderRMaxFileSize = KB [Page]
#back up a file
logjappenderRMaxBackupIndex =
logjappenderRlayout = orgapachelogjPatternLayout
logjappenderRlayoutConversionPattern=%d{yyyyMMdd HH:mm:ss} [%c][%p] %m%n
上面的配置文件说明log信息将以两种方式输出(文件和控制台)${webapproot}表示应用的根目录下(例如本应用名称为ABC则logtxt的位置为tomact\\webapp\\ABC下)
最后在程序中想要输出log的地方加入logj的支持
()引入 import orgapachelogjLogger
()声明一个logger
private static Logger logger = LoggergetLogger(ClassNameclass);
()在程序中的相应位置加入输出信息
(\用户登录:\+usergetAccount());
ok完成了当有登录时会在控制台和文件中同时输出log信息如下
:: [commywebUserAction][INFO] 用户登录:yangsq
附注(转)
以下是配置文件(logjproperties)的一些重要的语法
定义配置文件
其实您也可以完全不使用配置文件而是在代码中配置Logj环境但是使用配置文件将使您的应用程序更加灵活
Logj支持两种配置文件格式一种是XML格式的文件一种是Java特性文件(键=值)下面我们介绍使用Java特性文件做为配置文件的方法
配置根Logger其语法为
logjrootLogger = [ level ] appenderName appenderName …
其中level 是日志记录的优先级分为OFFFATALERRORWARNINFODEBUGALL或者您定义的级别Logj建议只使用四个级别优先级从高到低分别是ERRORWARNINFODEBUG通过在这里定义的级别您可以控制到应用程序中相应级别的日志信息的开关比如在这里定义了INFO级别则应用程序中所有DEBUG级别的日志信息将不被打印出来
appenderName就是指定日志信息输出到哪个地方您可以同时指定多个输出目的地
配置日志信息输出目的地Appender其语法为
logjappenderappenderName = fullyqualifiednameofappenderclass
logjappenderappenderNameoption = value
…
logjappenderappenderNameoption = valueN
其中Logj提供的appender有以下几种
orgapachelogjConsoleAppender(控制台)
orgapachelogjFileAppender(文件)
orgapachelogjDailyRollingFileAppender(每天产生一个日志文件)orgapachelogjRollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
orgapachelogjWriterAppender(将日志信息以流格式发送到任意指定的地方)
配置日志信息的格式(布局)其语法为
logjappenderappenderNamelayout = fullyqualifiednameoflayoutclass
logjappenderappenderNamelayoutoption = value
…
logjappenderappenderNamelayoutoption = valueN [Page]
其中Logj提供的layout有以下几种
orgapachelogjHTMLLayout(以HTML表格形式布局)
orgapachelogjPatternLayout(可以灵活地指定布局模式)
orgapachelogjSimpleLayout(包含日志信息的级别和信息字符串)
orgapachelogjTTCCLayout(包含日志产生的时间线程类别等等信息)