最近为了实现统计一个网站的访问量,记录用户的登录信息,以方便站长实时了解自己网站的访问情况,选择了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);
}
}
就这么处理就可以了!路径可以修改成任意路径的!
分享到:
相关推荐
本工程基于Eclipse IDE,配置了一个简单的Log4j设置,实现了每天自动将日志输出到一个特定命名格式的文件中,即“XXX_年月日时分.log”。下面我们将详细解析这个配置及其工作原理。 1. **Log4j介绍**: Log4j是一...
相比之下,Log4j2就比较简单,我们只需要把log4j2.xml文件放到工程的resource目录下就行了。 Log调用 Log4j和Log4j2的调用都是很简单的。Log4j需要import org.apache.log4j.Logger;然后使用Logger.getLogger()方法...
### Log4j从入门到详解 #### 1. Log4j简介 Log4j是一个开源的日志框架,由Apache组织维护。它为开发者提供了强大的日志管理功能,可以帮助开发者记录程序运行过程中的关键信息,方便后期的问题排查和性能优化。 ...
例如,如果你选择Log4j,你需要在项目中包含Log4j的库,并配置相应的log4j.properties或log4j.xml文件来指定日志级别、输出目的地和格式。 配置文件通常包含以下关键元素: 1. **日志级别**:定义了哪些信息会被...
### ARM M0 RTT打印log配置详解 #### 一、RTT简介与M0支持情况 **RTT(Real Termianl Tool)**是由Segger公司开发的一种实时调试工具,它能够实现在运行时将数据从目标板传输到PC端进行显示的功能。RTT对于嵌入式...
解决办法是在项目的`src/main/resources`目录下创建名为`log4j.properties`的文件,并配置日志级别和输出方式,例如: ``` log4j.rootLogger=INFO, stdout log4j.appender.stdout=org.apache.log4j....
8. **测试与调试**:在开发过程中,单元测试(JUnit)、集成测试(Selenium、TestNG)以及日志记录(Log4j、SLF4J)都是必不可少的工具,它们能确保代码质量并便于问题定位。 9. **项目构建与部署**:可能使用了...
网管教程 从入门到精通软件篇 ★一。★详细的xp修复控制台命令和用法!!! 放入xp(2000)的光盘,安装时候选R,修复! Windows XP(包括 Windows 2000)的控制台命令是在系统出现一些意外情况下的一种非常有效的...
8. `slf4j-api-*.jar`和相应的实现(如logback-classic.jar、log4j.jar):日志框架,用于记录Hibernate的操作日志。 **查看Hibernate自动生成的建表语句** 在开发过程中,有时我们需要查看Hibernate根据实体类自动...
通过`System.out.println()`或日志记录库(如log4j、slf4j)可以将异常信息输出,便于调试和分析。 4. **日志记录**:在Java中,日志记录是跟踪应用程序运行状态、排查问题的重要工具。常见的日志框架有log4j、...
谷歌早在 2002 年就进入了移动领域,可是由于目前的手机操作系统企业和手机企业相对封闭,提高了 行业的进入门槛,移动互联网的发展远没有拥有统一标准的传统互联网发展迅速,此次推出的开源手机操 作 系统平台就是...