log4j与logback自定义文件存放目录方法

标签: log4j logback 定义 | 发表时间:2015-12-26 11:31 | 作者:xcl959259
出处:http://www.iteye.com

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

       我们的工程日志的记录采用了两种方式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中增加监听

 <listener>
  <listener-class>XXX.XXXX.LogbackCustomName</listener-class>
 </listener>

      这一段一定要放在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配置文件,增加自定义变量

 <define  name="HostName" class="XXX.XXX..LogbackCustomName" /> 

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

 



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [log4j logback 定义] 推荐:

log4j与logback自定义文件存放目录方法

- - 研发管理 - ITeye博客
       为了方便日志的管理,我们在集群之间通过网络挂载的方式创建了一个共享目录即在所有的服务器上均可以访问此磁盘目录. 因此我们在写日志时需要根据集群的环境动态的设定日志的存储路径.        我们的工程日志的记录采用了两种方式log4j和sl4f+logback. 一、log4j自定义路径.

从Log4j迁移到LogBack的理由

- - 博客 - 伯乐在线
英文原文: Reasons to prefer logback over log4j,编译: oschina. 无论从设计上还是实现上,Logback相对log4j而言有了相对多的改进. 不过尽管难以一一细数,这里还是列举部分理由为什么选择logback而不是log4j. 牢记logback与log4j在概念上面是很相似的,它们都是有同一群开发者建立.

log4j输出多个自定义日志文件

- - 非技术 - ITeye博客
logger是category的子类,category现在已经不提倡使用. 但是现在部分jar依然使用的category,所以需要使用log4j.category.org.mybatis控制,例如:org.mybatis,org.apache等. -----------下面为转载----------------------.

log4j的MDC

- - 行业应用 - ITeye博客
原文地址: http://blog.csdn.net/huxin1/article/details/5736227. NDC(Nested Diagnostic Context)和MDC(Mapped Diagnostic Context)是log4j种非常有用的两个类,它们用于存储应用程序的上下文信息(context infomation),从而便于在log中使用这些上下文信息.

Apache Log4j 2.0介绍

- - CSDN博客推荐文章
Apache Log4j 2.0介绍. 作者:chszs,转载需注明. 作者博客主页:http://blog.csdn.net/chszs. Apache Log4j是著名的Java日志框架之一,在早些年应用最广. 但近两年来,随着SLF4J和LogBack的兴起,很多流行的开源框架在日志模块方面逐步转移到SLF4J+LogBack上,Log4j日渐衰落.

log4j实用配置

- - CSDN博客架构设计推荐文章
第一步:加入log4j-1.2.8.jar到lib下. 第二步:在CLASSPATH下建立log4j.properties. 此句为将等级为INFO的日志信息输出到stdout和R这两个目的地,stdout和R的定义在下面的代码,可以任意起名. 等级可分为OFF、 FATAL、ERROR、WARN、INFO、DEBUG、ALL,如果配置OFF则不打出任何信息,如果配置为INFO这样只显示INFO, WARN, ERROR的log信息,而DEBUG信息不会被显示,具体讲解可参照第三部分定义配置文件中的logger.

Logback日志文件的配置

- - BlogJava-首页技术区
日志每天归档,同时目录名包含相应的年份和月份. 注意其中aux的使用,在fileNamePatter中如果出现多个%d的情况下,只能有一个为主配置,其他都需要使用aux标记为附属配置. 其中的%i请参看下节的介绍. 文件同时根据日期和大小滚动创建. fileNamePattern在上一节已经介绍,这里主要介绍timeBasedFileNamingAndTriggeringPolicy,此处配置对文件大小的限定,由fileNamePattern的%i在确定下标在文件名中的位置.

Log4j详细配置(转)

- - Web前端 - ITeye博客
原文地址:Log4j.properties配置详解作者:大海巨浪. Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局). 这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出. 综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置.

Log4j最佳实践(原) - Mainz

- - 博客园_Mainz's Blog
本文是结合项目中使用 Log4j总结的最佳实践,非转载. 网上可以找到的是这一篇《 Log4j最佳实践》. 本来 Log4j使用是非常简单的,无需多介绍其用法,这只是在小型项目中;但在 大型的项目中使用 log4j不太一样. 大型项目非常依赖日志,因为解决线上问题必须依靠log,依靠大量的日志.

log4j日志性能优化

- - 编程语言 - ITeye博客
       在软件系统中,打日志几乎是每个系统都会使用的行为. 不管是用来记录系统健康状态,辅助问题定位,还是收集数据,以便后续数据分析等,日志都起着举足轻重的作用. 但是IO的阻塞行为和磁盘的读写速度低下意味着写日志并非是没有代价的.           在很多系统中,日志模块用的都是log4j,打日志用的都是同步方法,基本配置如下:.