• log4j 产生的日志位置设置和catalina.home、catalina.base


    方法一、 解决的办法自然是用相对路径代替绝对路径,其实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系统的环境变量中设置。之所以这样,你可以看看tomcatincatalina.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实 例时,这两个属性指向的位置是相同的。

     
  • 相关阅读:
    【Mybatis源码解析】Mybatis的日志系统
    20200728
    【Mybatis源码解析】-Configuration
    【日志】怎么打印日志
    【OOM】几种常见的OOM异常
    树 [虚树, 动态规划]
    最大公约数 [动态规划]
    送分题 [组合计数]
    LCM [树状数组, HH的项链]
    AT1219 歴史の研究 [回滚莫队]
  • 原文地址:https://www.cnblogs.com/jing99/p/7679055.html
Copyright © 2020-2023  润新知