‘壹’ linux下怎么安装log4j
可以使用log4j的日志配置来保存生产的日志,路径和文件大小均可以自己配置。Log4j下载
在apache网站,可以免费下载到Log4j最新宴正版本的软件包
Apache log4j (推荐)
Apache log4j 2
Log4j的包下载完成后,解压,将其中打包好的的log4j-1.x.x.jar导入你的工程LIB中。
Log4j配置
Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。
1. 配置文件
Log4J配置文件的基本格式如下:
#配置根Logger
log4j.rootLogger = [ level ] , appenderName1 , appenderName2 , …
#配置日志信晌悔悔前雹息输出目的地Appender
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
…
log4j.appender.appenderName.optionN = valueN
#配置日志信息的格式(布局)
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1
…
log4j.appender.appenderName.layout.optionN = valueN
其中 [level] 是日志输出级别,共有5级:
FATAL 0
ERROR 3
WARN 4
INFO 6
DEBUG 7
‘贰’ log4J 如何在运行时改变产生日志路径
输出路径没有完美的解决办法。
log4j.rootLogger=debug,stdout,R1 -->>日亮尘志输出debug级别以上的到stdout(控制台) 和R1(自己随便定义的)
1.
log4j.appender.R1.File=/log.log -->>这拿键简种输出到 盘的 根目录下 (不推荐,win和linux 不同)
2.
log4j.appender.R1.File=logs/ydcardsys.log -->>项目文件中 (不推荐,容易清理掉)
3.
log4j.appender.R.File=${catalina.home}/logs/ydbudget.log (tomcat系的容器 这种方法不消裤错,切到别的容器就不行了)
4.
web.xml
<context-param> <param-name>webAppRootKey</param-name> <param-value>webApp.root</param-value> </context-param>
log4j.appender.R1.File=${webApp.root}logs/log.log
(这种方法的好处是不区分系统,不区分容器,缺点是会产生垃圾文件,${webApp.root} 在这个被赋值前有段日志不会在你想要的地方,当然妨碍不大,我用的就是这种)
‘叁’ 在linux下配置log4j
log4j与linux没有半毛钱关系。与项目本身有关。比如java中的配置文件即可。
只是注意在linux系统中的路径就可以了
‘肆’ log4j日志文件相对路径怎么设置
方法一:用相对路径代替绝对路径
主要是扩展了log4j的RollingFileAppender类,其他的FileAppender同样道理。扩展的方法,轿尘就是用一个子类去覆盖setFile方法,这个方法在log4j读取配置文件生成appender的时候调用
,传入的就是配 置文件中的路径,这样我就可以按照自己的想法在路径前面加上根路径了。这种方法可以在log4j.properties中用相对路径自由配置log4j.appender.A1.File属性闭碰禅来决定生成的日
志相对web应用根目录的位置。吵隐
方法二:使用服务器环境变量
是利用服务器vm中已经存在的环境变量如${catalina.home}来设置相对于${catalina.home}的日志路径,日志只能放到服务器子目录里,而且如果是用的其它服务器,则要改对应的环境变
量。此方法平台移植不方便。
方法三:通过servlet初始化init()方法中加载file属性实现相对路径
是扩展ActionServlet类,覆盖其init()方法,新方法中载入log4j.properties位置的参数,可以自由配置log4j的配置文件的名字和存放位置。也可自由配置log4j日志文件的相对于当前应
用的路径。
‘伍’ log4j输出文件位置
两个建议:
1. log4j.appender.appender1.File=infoOut.log改用完整文件路径,如:log4j.appender.appender1.File=c:\infoOut.log.
2. 你的log级毁雀别是error,比较高。系统搜圆不纤漏早报错是不会有内容出现在log中的。可改用debug或info级别试试。
‘陆’ log4j.appender.jdbc.File=/var/log/imf/jdbc.log这是linux路径还是windows路径
linux的
windows的路径是c:\windows 这样的。
‘柒’ log4j怎么配置日志输出路径
以DailyRollingFileAppender 为例:假设每天一个日志文件
有以下设置:
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=app.log
log4j.appender.A1.DatePattern='.'yyyy-MM-dd
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d %5p - %c -%-4r [%t] - %m%n
此时生成日志文件将位于拆者空tomcat的bin目录下,如要将日志文件保存在 :根目录/web-info/logs/下,个人有以下4种解决方案:
1 绝对路径
log4j.appender.A1.File=D:\apache-tomcat-6.0.18/webapps/项目/WEB-INF/logs/app.log
但这种写法灵活性很差
以下3中使用相同的设置原理: jvm的环境变量
2:spring的Log4jConfigListener
通过以下配置:
< context-param>
<param-name>webAppRootKey</param-name>
<param-value>webApp.root</param-value>
</context-param>嫌租
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>
< listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
...
log4j.appender.logfile.File=${webApp.root}/WEB-INF/logs/app.log
...
来解决
2:使用已有jvm变量:
例如:
log4j.appender.logfile.File=${user.home}/logs/app.log
日志将位于:例如windows:C:\Documents and Settings\joe\logs\app.log
3 自己设置目录,也就是在项目启动时旅瞎通过System.setProperty设置
通过实现ServletContextListener来解决:例如
public class log4jlistener implements ServletContextListener {
public static final String log4jdirkey = "log4jdir";
public void contextDestroyed(ServletContextEvent servletcontextevent) {
System.getProperties().remove(log4jdirkey);
}
public void contextInitialized(ServletContextEvent servletcontextevent) {
String log4jdir = servletcontextevent.getServletContext().getRealPath("/");
//System.out.println("log4jdir:"+log4jdir);
System.setProperty(log4jdirkey, log4jdir);
}
}
web.xml配置:
<listener>
<listener-class>com.log4j.log4jlistener</listener-class>
</listener>
log4j.prtperties 配置:
log4j.appender.A1.File=${log4jdir}/WEB-INF/logs/app1.log
来解决。