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

最近为了实现统计一个网站的访问量,记录用户的登录信息,以方便站长实时了解自己网站的访问情况,选择了Apache 的log4j,但是在选择相对路径那块 卡主了,X度了好多方法(其实大多都是一样的内用,还一个字都不差的),都没有能解决问题,无奈搞了2天终于解决了,与大家分享一下

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

[b]问题:[/b]
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);

}
}

就这么处理就可以了!路径可以修改成任意路径的!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值