logback 当前目录_log4j与logback自定义文件存放目录方法

为了方便日志的管理,我们在集群之间通过网络挂载的方式创建了一个共享目录即在所有的服务器上均可以访问此磁盘目录。因此我们在写日志时需要根据集群的环境动态的设定日志的存储路径。

我们的工程日志的记录采用了两种方式log4j和sl4f+logback

一、log4j自定义路径

1、创建类LogbackCustomName让其继承ServletContextListener。

public static final String log4jdirkey = "log4jdir";

@Override

public void contextDestroyed(ServletContextEvent log4jdirkey) {

System.getProperties().remove(log4jdirkey);

}

@Override

public void contextInitialized(ServletContextEvent servletcontextevent) {

InetAddress netAddress = getInetAddress();

//获取主机名 此方法也可以获取主机IP但是只能在windows中使用

String log4jdir = getHostName(netAddress);

System.setProperty(log4jdirkey, log4jdir);

}

public static InetAddress getInetAddress() {

try {

return InetAddress.getLocalHost();

} catch (UnknownHostException e) {

e.printStackTrace();

}

return null;

}

public static String getHostName(InetAddress netAddress) {

if (null == netAddress) {

return null;

}

String ip = netAddress.getHostName();

return ip;

}

2、修改web.xml文件

在web.xml中增加监听

XXX.XXXX.LogbackCustomName

这一段一定要放在Spring的监听之前,否则不会生效。

配置完成后在日志写入路径中加上${log4jdir}即可。

二、logback自定义路径

1、首先创建类LogbackCustomName继承logback中的PropertyDefinerBase

@Override

public String getPropertyValue() {

String info;

InetAddress netAddress = getInetAddress();

//获取主机名 linux多网卡无法根据环境指定具体网卡,此方法只能在windows下使用

info = getHostName(netAddress);

return info;

}

public static InetAddress getInetAddress() {

try {

return InetAddress.getLocalHost();

} catch (UnknownHostException e) {

e.printStackTrace();

}

return null;

}

public static String getHostName(InetAddress netAddress) {

if (null == netAddress) {

return null;

}

String ip = netAddress.getHostName();

return ip;

}

二、修改logback.xml配置文件,增加自定义变量

然后在定义路径时在路径名上加上${HostName}即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值