log4j 不同模块输出到不同的文件

1、实现目标

不同业务的日志信息需要打印到不同的文件中,每天或者每个小时生成一个文件。如,注册的信息打印到register.log,每天凌晨生成一个register-年月日.log文件, 登录信息的日志打印到一个login.log文件中,login-年月日.log。

整体架构:

log4j 不同模块输出到不同的文件

2、maven配置

4.0.0

    test
    common
    1.0-SNAPSHOT

            org.slf4j
            slf4j-api
            1.7.6

            org.slf4j
            slf4j-log4j12
            1.7.6

3、配置文件

默认情况下,log4j会解析 src/main/resources/log4j.properties文件,下面是log4.properties文件中的内容####父级Logger log4j.rootCategory=info,stdout

### 子Logger是否会中父级Logger(上面设置的log4j.rootCategory)的appender里面输出,默认是true
### 为true时:子级别的Logger输出后还会在父级Logger里面输出
### 为false时:log日志只会在当前级别的Logger里面输出,不会在父级Logger里面输出
log4j.addivity.org.apache=true

logdir=/Users/zhengcanrui/WORK/test/logs

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%p\:%d{yyyyMMdd HH\:mm\:ss} %c\: %m%n

#########自定义日志输出##########

log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=${logdir}/file.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n

##register模块输出
#### 用来控制过来日志信息,如:下面至少是INFO的信息才会输出到register文件中
log4j.logger.register=INFO,register
log4j.appender.register=org.apache.log4j.DailyRollingFileAppender
log4j.appender.register.File=${logdir}/register.log
log4j.appender.register.DatePattern='_'yyyy-MM-dd'.log'
log4j.appender.register.layout=org.apache.log4j.PatternLayout
log4j.appender.register.layout.ConversionPattern=%d %p [%c %L %l] - %m%n
log4j.additivity.register=true

##login模块输出
#INFO及以上几倍的log进行输出log4j.logger.login=INFO,login #以文件类型输出
log4j.appender.login=org.apache.log4j.DailyRollingFileAppender   #输出路径log4j.appender.login.File=${logdir}/login.log#配置文件输出的文件命名,这种格式文件会在凌晨生成一个文件,想在其他时间生成新文件可以查看DatePattern的相关配置
log4j.appender.login.DatePattern='_'yyyy-MM-dd'.log'
#输出格式log4j.appender.login.layout=org.apache.log4j.PatternLayout
log4j.appender.login.layout.ConversionPattern=%d %p [%c] - %m%n
设置这个子Logger输出日志不在父级别logger里面输出
log4j.additivity.login=false

开源库的日志输出控制
logger for spring
log4j.logger.org.springframework=error

logger for MemCached
log4j.logger.com.danga.MemCached=error

logger for c3p0
log4j.logger.com.mchange=error

org.apache.commons.httpclient=error

org.apache.http=error

几个需要注意的属性:

log4j.additivity-模块名:设置子logger是否在父级Logger中输出。

模块名的命名:log4j.appender.模块名.属性。

配置文件中的各个属性意义,可以查看:http://www.cnblogs.com/0201zcr/p/4761505.html

Logger类是日志包的核心,Logger的名称是大小写敏感的,并且名称之间有继承关系。子名由父名做前缀,用点号”.”分隔,如x.y是x.y.z的父亲Logger。

Logger系统中有个根logger,是所有logger的祖先,它总是存在的,并且不可以通过名字获取,可以通过Logger.getRootLogger()来获取。

4、测试类

import org.apache.log4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Created by zhengcanrui on 16/7/27.

 */
public class LoggerUtil {

   private static final Logger file = Logger.getLogger("file");
    private static final Logger register = Logger.getLogger("register");
    private static final Logger login = Logger.getLogger("login");
    private static final Logger goldcoin = Logger.getLogger("goldcoin");
    private static final Logger recharge = Logger.getLogger("recharge");
    private static final Logger jjj = Logger.getLogger(LoggerUtil.class.getName());
    private static final Logger FILE = Logger.getLogger("appender1");
    private static org.apache.log4j.Logger log = Logger.getLogger(LoggerUtil.class);
    public static void logInfo(String log) {
        file.info(log);
    }

    public static void registerInfo() {
        register.info("[register] ddd " );
    }

    public static void loginInfo() {
        login.info("[login] 222" );
    }

    public static void main(String[] args) {
        /*logInfo("11");
        registerInfo();
        loginInfo();*/
        /*login.info("[login] 大大大大大大大大");
        register.debug("2222");
        register.info("[register] 人人人人人人人人人人");*/

        //jjj.info("test");
        //log.info(222);
        FILE.info("334343");
        register.info("2222");
    }
}

结果:

1)控制台

INFO:20160801 12:27:57 appender1: 334343
INFO:20160801 12:27:57 register: 2222

2)生成文件

log4j 不同模块输出到不同的文件

3)文件中内容

log4j 不同模块输出到不同的文件

致谢:感谢您的阅读!

Original: https://www.cnblogs.com/goody9807/p/9603147.html
Author: PointNet
Title: log4j 不同模块输出到不同的文件

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/551828/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 致和我一样迷茫的Java程序员们

    目前已发布的文章: 不止面试—jvm类加载面试题详解 不止面试—JVM内存模型面试题详解 缘起 从事近7年Java开发之后,在2019年这个寒冷的冬天里,我终于迎来了人生中的第一次…

    技术杂谈 2023年7月11日
    076
  • 问题开发

    1.路由协议 2.snmpv2 v3 发展异同 ?原因 解决什么问题 Original: https://www.cnblogs.com/hshy/p/16539009.htmlA…

    技术杂谈 2023年5月31日
    0121
  • FeignClient中name和url属性的作用

    定义: feign是声明式的web service客户端,它让微服务之间的调用变得更简单了,类似controller调用service。Spring Cloud集成了Ribbon和…

    技术杂谈 2023年5月30日
    0104
  • macOS快捷键

    1. 最小化所有应用程序 command+option+h+m 2. 同应用窗口切换 command ~ 3. 截图 "全&a…

    技术杂谈 2023年6月21日
    0107
  • Go Programming Language 2

    【 Go Programming Language 2】 1、In Go, the sign of the remainder is always the same as the …

    技术杂谈 2023年5月31日
    071
  • 研发过程中的文档管理与工具

    写文档也是技术活 01:实践 对于多数开发同学来说,很多时候即讨厌没有研发文档,但是自己又不愿意常写文档,痛且倔强着; 程序员该不该写文档,与争论哪种编程语言最好一样,想撕的嘴不留…

    技术杂谈 2023年7月23日
    064
  • Linux 配置Java环境变量

    前言:请各大网友尊重本人原创知识分享,谨记本人博客: 南国以南i 注:目前在官网下载的时候需要登陆,这边分享一个账号,方便下载 账号:2696671285@qq.com密码:Ora…

    技术杂谈 2023年7月11日
    079
  • 关于OBJ/LIB格式,我以前有个总结

    1.VC,GCC obj,lib格式为coff 可相互通用2.vc,gcc的obj,lib可通过coff2omfn转成OMF格式,但VC在编译时要加/Zl选项3.VC,GCC的ty…

    技术杂谈 2023年5月31日
    079
  • Bash 脚本实例:获取符号链接的目标位置

    我们都熟悉 Linux 中的符号链接,通常称为符号链接或软链接,符号链接是指向任何文件系统中的另一个文件或目录的特定文件。 本文将介绍 Linux 中符号链接的基础知识,并创建一个…

    技术杂谈 2023年5月31日
    087
  • 用emacs org-mode写cnblogs博客(续)

    3 发文中的博客代码格式背景的问题 在书写博客时,可以使用org自带的 {#+BEGIN_CENTER #+END_CENTER}功能调整文字,图片居中。使用{#+BEGIN_SR…

    技术杂谈 2023年7月25日
    096
  • mybatisplus不支持sum,但支持这个

    我们知道,要对数据求和,写sql很简单:select sum(exp) from table_name我们在用mybatisplus做求和计算的时候,mybatisplus的Wra…

    技术杂谈 2023年7月11日
    076
  • Rsync数据备份工具

    Rsync数据备份工具 1、Rsync基本概述 rsync是一款开源的备份工具,可以在不同主机之间进行同步(windows和Linux之间 Mac和 Linux Linux和Lin…

    技术杂谈 2023年6月21日
    093
  • linux用户身份与文件权限

    tips:可以将安装好的系统设置为一次快照,这样即便系统彻底崩溃了,也可以在5秒的时间内快速还原出一台全新的系统,而不用担心数据丢失 1、用户身份和能力 Linux系统的管理员之所…

    技术杂谈 2023年7月11日
    074
  • 末2鼠鼠保研之旅

    个人情况 学校:江西末流211 专业:软件工程 绩点:3.55/4.0(23/369) 项目:一个CV相关、一个知识图谱相关、剩余都是包装的课设(简历放了5个项目,因为真没啥写的了…

    技术杂谈 2023年7月23日
    070
  • 注意力机制是什么

    假设有一天热爱绘画的你决定去户外写生,你来到一片山坡上,极目远去,心旷神怡。头顶一片蔚蓝,脚踩一席草绿,远处山川连绵,眼前花草送香,暖阳含羞云后,轻风拂动衣襟,鸟啼虫鸣入耳,美景丹…

    技术杂谈 2023年7月11日
    077
  • []验证需求(需求三角)总结提炼

    [原创]验证需求(需求三角)总结提炼 1、所谓缺乏感,也就是我们常说的痛点或者刚需,来源于用户的心理落差,这种落差可以从五个维度去分析,分别是任务、时间、关系、群体和角色。 2、所…

    技术杂谈 2023年5月30日
    081
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球