当前位置:首页 > 开发 > Web前端 > 前端 > 正文

log4j打印日志文件 如何实现相对路径到 项目工程下

发表于: 2014-09-18   作者:thinkfreer   来源:转载   浏览:
摘要: 最近为了实现统计一个网站的访问量,记录用户的登录信息,以方便站长实时了解自己网站的访问情况,选择了Apache 的log4j,但是在选择相对路径那块 卡主了,X度了好多方法(其实大多都是一样的内用,还一个字都不差的),都没有能解决问题,无奈搞了2天终于解决了,与大家分享一下 需求: 用户登录该网站时,把用户的登录名,ip,时间。统计到一个txt文档里,以方便其他系统调用此txt。项目名
最近为了实现统计一个网站的访问量,记录用户的登录信息,以方便站长实时了解自己网站的访问情况,选择了Apache 的log4j,但是在选择相对路径那块 卡主了,X度了好多方法(其实大多都是一样的内用,还一个字都不差的),都没有能解决问题,无奈搞了2天终于解决了,与大家分享一下

需求:
用户登录该网站时,把用户的登录名,ip,时间。统计到一个txt文档里,以方便其他系统调用此txt。项目名称为coop 要不日志文件放在coop/logs 下

问题:
Log4j日志输出路径只能设定成绝对路径,这个在web项目中就变得很不方便了,日志在服务器上怎能设置为绝对路径呢!
比如我想要设定日志保存在webapp/log
这是log4j.properties 文件的配置
log4j.logger.loguser=info,user
#
#Record the user login information
#
log4j.appender.user=org.apache.log4j.DailyRollingFileAppender
log4j.appender.user.File[b]=${LOG_DIR}login.log
log4j.appender.user.layout=org.apache.log4j.PatternLayout
log4j.appender.user.layout.ConversionPattern=  %d{yyyy\-MM\-dd HH\:mm\:ss }| %m%n

在用户登录页面的action里
public class UserAction{
   private static final Logger loguser = Logger.getLogger("loguser");
   /**
    * 此处 判断用户名和密码是否正确,正确就返回user对象,--此处省略 :D 
    *
   */
    //重点在这
    // 把用户写入到日志		
      if(user!=null){
         String url = UserAction.class.getClassLoader().getResource("").getPath();
         //D:/apache-tomcat-7.0.0/wtpwebapps/COOP/WEB-INF/classes/

          url = url.replace("WEB-INF/classes/", "logs/");
         //替换之后的url=D:/apache-tomcat-7.0.0/wtpwebapps/COOP/logs/ 

          System.setProperty("LOG_DIR", url);
	  //LOG_DIR就是在log4j.properties那个个file 对应到路径

          String host = request.getRemoteHost();
          String str = user.getUserName();
          loguser.info(str+" | "+host);

      }
}

就这么处理就可以了!路径可以修改成任意路径的!

log4j打印日志文件 如何实现相对路径到 项目工程下

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
单位有很多java项目,一般上生产的项目日志都是通过log4j打印在本地,平常开发同学要查看日志还要给
转自:http://my.oschina.net/chinaearl/blog/111552 单位有很多java项目,一般上生产的项目日志都
转自:http://my.oschina.net/chinaearl/blog/111552 单位有很多java项目,一般上生产的项目日志都
在eclipse或myeclipse中使用tomcat启动项目可以在控制台输出相关日志,有时日志打印的多了查看的话
.project <?xml version="1.0" encoding="UTF-8"?> <projectDescription> <name>
mybatis结合log4j打印SQL日志 默认的mybatis不能打印出SQL日志,不便于查看调试,需要结合log4jdbc-
1. Web server 集群数据采集采用的架构 2. 在每台web server上启动一个flume agent ( Flume1.3.1 :
由于最近正在扩展卫生局考务系统,由于上一次使用过一次该系统后,发现很多考生最后出现说已打印报
方法1:解压del_svn.rar,将解压后的bat文件放到要断开SVN连接的工程的根目录下,双击后点Y即可。 方
Ogre1.7改用CMake生成工程文件,用了之后发现生成的工程中全部使用了绝对路径。这就很麻烦了,一旦
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号