`
thinkfreer
  • 浏览: 2048 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多
最近为了实现统计一个网站的访问量,记录用户的登录信息,以方便站长实时了解自己网站的访问情况,选择了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的eclipse简单工程,每天输出到一个日志文件中,该文件名为:“XXX_年月日时分.log”的形式

    本工程基于Eclipse IDE,配置了一个简单的Log4j设置,实现了每天自动将日志输出到一个特定命名格式的文件中,即“XXX_年月日时分.log”。下面我们将详细解析这个配置及其工作原理。 1. **Log4j介绍**: Log4j是一...

    老生常谈Log4j和Log4j2的区别(推荐)

    相比之下,Log4j2就比较简单,我们只需要把log4j2.xml文件放到工程的resource目录下就行了。 Log调用 Log4j和Log4j2的调用都是很简单的。Log4j需要import org.apache.log4j.Logger;然后使用Logger.getLogger()方法...

    log4j从入门到详解

    ### Log4j从入门到详解 #### 1. Log4j简介 Log4j是一个开源的日志框架,由Apache组织维护。它为开发者提供了强大的日志管理功能,可以帮助开发者记录程序运行过程中的关键信息,方便后期的问题排查和性能优化。 ...

    CXF 文件记录报文日志,非控制台打印。

    例如,如果你选择Log4j,你需要在项目中包含Log4j的库,并配置相应的log4j.properties或log4j.xml文件来指定日志级别、输出目的地和格式。 配置文件通常包含以下关键元素: 1. **日志级别**:定义了哪些信息会被...

    ARM M0 RTT打印log配置

    ### ARM M0 RTT打印log配置详解 #### 一、RTT简介与M0支持情况 **RTT(Real Termianl Tool)**是由Segger公司开发的一种实时调试工具,它能够实现在运行时将数据从目标板传输到PC端进行显示的功能。RTT对于嵌入式...

    9_尚硅谷大数据之HDFS客户端操作1

    解决办法是在项目的`src/main/resources`目录下创建名为`log4j.properties`的文件,并配置日志级别和输出方式,例如: ``` log4j.rootLogger=INFO, stdout log4j.appender.stdout=org.apache.log4j....

    试卷管理系统

    8. **测试与调试**:在开发过程中,单元测试(JUnit)、集成测试(Selenium、TestNG)以及日志记录(Log4j、SLF4J)都是必不可少的工具,它们能确保代码质量并便于问题定位。 9. **项目构建与部署**:可能使用了...

    网管教程 从入门到精通软件篇.txt

    网管教程 从入门到精通软件篇 ★一。★详细的xp修复控制台命令和用法!!! 放入xp(2000)的光盘,安装时候选R,修复! Windows XP(包括 Windows 2000)的控制台命令是在系统出现一些意外情况下的一种非常有效的...

    hibernate的相关jar包

    8. `slf4j-api-*.jar`和相应的实现(如logback-classic.jar、log4j.jar):日志框架,用于记录Hibernate的操作日志。 **查看Hibernate自动生成的建表语句** 在开发过程中,有时我们需要查看Hibernate根据实体类自动...

    第一工程

    通过`System.out.println()`或日志记录库(如log4j、slf4j)可以将异常信息输出,便于调试和分析。 4. **日志记录**:在Java中,日志记录是跟踪应用程序运行状态、排查问题的重要工具。常见的日志框架有log4j、...

    新版Android开发教程.rar

    谷歌早在 2002 年就进入了移动领域,可是由于目前的手机操作系统企业和手机企业相对封闭,提高了 行业的进入门槛,移动互联网的发展远没有拥有统一标准的传统互联网发展迅速,此次推出的开源手机操 作 系统平台就是...

Global site tag (gtag.js) - Google Analytics