随笔 - 361,  文章 - 0,  评论 - 62,  阅读 - 160万

方法一、 解决的办法自然是用相对路径代替绝对路径,其实log4j的FileAppender本身就有这样的机制,如:log4j.appender.logfile.File=${WORKDIR}/logs/app.log 
  其中“${WORKDIR}/”是个变量,会被System Property中的“WORKDIR”的值代替。这样,我们就可以在log4j加载配置文件之前,先用System.setProperty ("WORKDIR", WORKDIR);设置好根路径,此操作可通过一初始的servlet进行。 

方法二、可以使用服务器环境变量 
  log4j的配置文件支持服务器的vm的环境变量,格式类似${catalina.home} 
  log4j.appender.R=org.apache.log4j.RollingFileAppender 
  log4j.appender.R.File=${catalina.home}/logs/logs_tomcat.log 
  log4j.appender.R.MaxFileSize=10KB 
  其中的${catalina.home}并非windows系统的环境变量,这个环境变量就不需要在Windows系统的环境变量中设置。之所以这样,你可以看看tomcat\bin\catalina.bat(startup,shutdown都是调用这个)里面自带有-Dcatalina.home= "%CATALINA_HOME%" 。继承这个思想,所以你也可以自己设定一个参数-Dmylog.home="D:/abc/log"到对应的服务器java启动的vm参数中 

方法三、通过servlet初始化init()方法中加载file属性实现相对路径 
  具体实现:做一个servlet,在系统加载的时候,就把properties的文件读到一个properties文件中.那个file的属性值(我使用的是相对目录)改掉(前面加上系统的根目录),让后把这个properties对象设置到propertyConfig中去,这样就初始化了log的设置.在后面的使用中就用不着再配置了 。
  一般在我们开发项目过程中,log4j日志输出路径固定到某个文件夹,这样如果我换一个环境,日志路径又需要重新修改,比较不方便,目前我采用了动态改变日志路径方法来实现相对路径保存日志文件

  

  catalina.homecatalina.base这两个属性仅在你需要安装多个Tomcat实 例而不想安装多个软件备份的时候使用,这样能节省磁盘空间。
Tomcat6.0为例,其Tomcat目 录结构如下:
  bin (运行脚本)
  conf (配置文件)
  lib (核心库文件)
  logs (日志目录)
  temp (临时目录)
  webapps (自动装载的应用程序的目录)
  work (JVM临时文件目录[java.io.tmpdir])

  让我们看看这些目录那些可以被多个Tomcat实例公用,其实只有 bin 和 lib 目录,其它目录conf、logs、temp、webapps和work每个Tomcat实例必须拥有其自己独立的备份。
  明白了上述关系就容易理解catalina.home和catalina.base的 用途了。
  catalina.home指向公用信息的位置,就是bin和lib的父目录。
  catalina.base指 向每个Tomcat目 录私有信息的位置,就是conf、logs、temp、webapps和work的父目录。
  仅运行一个Tomcat实 例时,这两个属性指向的位置是相同的。

 
posted on   kosamino  阅读(1020)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示