log4j中配置日志文件相对路径方法
来源:互联网 发布:济南seo搜索排名优化 编辑:程序博客网 时间:2024/05/22 07:42
总结了上面的三个方法,可取的是方法三,但是还是繁琐,要写个servlet,写一大堆代码
下面这个方法比较实用我觉得,大家可以试下:
log4j.appender.AFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.AFile.DatePattern='.'yyyy-MM-dd'.html'
log4j.appender.AFile.File=..//webapps//项目//logs//d1cm_log.html
log4j.appender.AFile.layout=org.apache.log4j.HTMLLayout
log4j.appender.AFile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %p %c %m %n
默认生成的日志文件是在服务器的bin目录下(我使用的是Tomcat),这样通过相对路径 ..//webapps//项目名称//日志目录//日志文件(或../webapps/项目名称/日志目录/日志文件),就能在你的项目中自动建立日志目录和日志文件。
方法一:用相对路径代替绝对路径
主要是扩展了log4j的RollingFileAppender类,其他的FileAppender同样道理。扩展的方法,就是用一个子类去覆盖setFile方法,这个方法在log4j读取配置文件生成appender的时候调用,传入的就是配置文件中的路径,这样我就可以按照自己的想法在路径前面加上根路径了。这种方法可以在log4j.properties中用相对路径自由配置log4j.appender.A1.File属性来决定生成的日志相对web应用根目录的位置。
举例:ZxmDailyRollingFileAppender.java
log4j.properties文件
log4j.appender.AFile=com.common.config.ZxmDailyRollingFileAppender
#log4j.appender.AFile=org.apache.log4j.DailyRollingFileAppender
public class ZxmDailyRollingFileAppender extends DailyRollingFileAppender {
public void setFile(String filetype, boolean arg2, boolean arg3, int arg4) throws IOException {
String path = getServletConfig().getServletContext().getRealPath("/logs/");
String fuhao = File.separator;
String filepath = path + fuhao + "log.html";
super.setFile(filepath, arg2, arg3, arg4);
}
}
方法二:使用服务器环境变量
是利用服务器vm中已经存在的环境变量如${catalina.home}或者${catalina.base}来设置相对于${catalina.home}或者${catalina.base}的日志路径,日志只能放到服务器子目录里,而且如果是用的其它服务器,则要改对应的环境变量。此方法平台移植不方便。
举例:log4j.appender.file.file=${catalina.base}/logs/psp_error.log
catalina.home指向公用信息的位置,就是bin和lib的父目录。
catalina.base指向每个Tomcat目录私有信息的位置,就是conf、logs、temp、webapps和work的父目录。
仅运行一个Tomcat实例时,这两个属性指向的位置是相同的。
方法三:通过servlet初始化init()方法中加载file属性实现相对路径
是扩展ActionServlet类,覆盖其init()方法,新方法中载入log4j.properties位置的参数,可以自由配置log4j的配置文件的名字和存放位置。也可自由配置log4j日志文件的相对于当前应用的路径。
举例:
web.xml
<!-- 系统初始化配置信息 servlet -->
<servlet>
<servlet-name>configServlet</servlet-name>
<servlet-class>com.common.config.ConfigServlet</servlet-class>
<init-param>
<param-name>Log4jFile</param-name>
<param-value>/WEB-INF/config/log4j.properties</param-value>
</init-param>
<init-param>
<param-name>Log4jFileSavePath</param-name>
<param-value>/logs</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
ConfigServlet.java文件
public class ConfigServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void init(ServletConfig config) throws ServletException {
super.init(config);
//初始化log4j日志组件
initLogConfig(config);
}
private void initLogConfig(ServletConfig config) {
String prifix = getServletContext().getRealPath("/");
//System.out.println(prifix);
//获取log4j配置文件地址
String Log4jFile = config.getInitParameter("Log4jFile");
//System.out.println(Log4jFile);
String filePath = prifix + Log4jFile;
//System.out.println(filePath);
PropertyConfigurator.configure(filePath);
Properties props = new Properties();
try {
String Log4jFileSavePath = config.getInitParameter("Log4jFileSavePath");
//System.out.println(Log4jFileSavePath);
FileInputStream log4jStream = new FileInputStream(filePath);
props.load(log4jStream);
log4jStream.close();
//设置日志保存地址
String logFile = prifix + Log4jFileSavePath + File.separator + "d1cm_log.html" ;
//System.out.println(logFile);
props.setProperty("log4j.appender.AFile.File", logFile);
PropertyConfigurator.configure(props); //装入log4j配置信息
} catch (IOException e) {
e.printStackTrace();
}
System.err.println("初始化log4j日志组件");
}
}
- log4j中配置日志文件相对路径方法分析
- log4j中配置日志文件相对路径方法分析
- log4j中配置日志文件相对路径方法
- log4j中配置日志文件相对路径方法分析
- log4j中配置日志文件相对路径方法分析(转)
- log4j中配置日志文件相对路径方法
- log4j中配置日志文件相对路径方法
- log4j中配置日志文件相对路径方法
- log4j中配置日志文件相对路径方法分析
- log4j中配置日志文件相对路径方法分析
- log4j中配置日志文件相对路径方法
- log4j中配置日志文件相对路径方法分析
- log4j中配置日志文件相对路径方法
- log4j中配置日志文件相对路径
- log4j中配置日志文件相对路径
- log4j中配置日志文件相对路径
- log4j中配置日志文件相对路径
- log4j中配置日志文件相对路径
- A new starting point
- Bundler的安装和配置
- C#操作word文档(二)
- 每个项目中,你必须知道的11个Java第三方类库
- 如何编译安装Bundler
- log4j中配置日志文件相对路径方法
- Zipline推出基于Lua跨平台游戏中间件Moai
- C#操作word文档(三)
- .net中操作Excel的方法
- checkbox如何检测已经选中,并且让选中和不选传递不同的值给变量!
- 如何制作一个网页快捷方式?不简单你杀了我。
- 准备结婚
- Excel中的下拉框是如何实现的?
- c3p0详细配置