热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Log4j日志文件Linux/Mac/Windows通用存放位置设置

log4j1log4j2中category的配置以及log的输出位置(windows和linux通用的log输出位置)一、场景和需求假设我现在有3个独立

log4j1/log4j2中category的配置以及log的输出位置(windows和linux通用的log输出位置)

一、场景和需求

假设我现在有3个独立的用project(暂时用maven关联起来,当然也可以不用maven),一个是提供公共服务的infrastructure,一个是提供存储的persister,一个是提供搜索的searcher,其中提供基础服务的所有的类,例如DateUtils,HttpUtils等工具类都位于目录com.chuanliu.platform.activity下,而提供存储服务的所有类都位于com.chuanliu.platform.activity.persist目录下,提供搜索服务的所有类都位于com.chuanliu.platform.activity.solr下。

 

现在项目的需求是有一个log文件叫full.log,需要记录所有的日志,不管是infrastructure下的,还是persister下的,还是seracher下的,另外还需要一个日志文件叫solr.log,记录所有发生在搜索目录下的日志。当然将来还应该将searcher目录下的日志放在searcer.log中。

除此之外还应该支持根据不同的部署环境设置不同的log输出位置,因为windows和linux具有不同的目录结构。

 

二、无论是log4j1还是log4j2中,都可以使用如下配置:

log4j.rootLogger = info
log4j.debug = false

log4j.category.com.chuanliu.platform.activity = info, full, stdout
#The child logger appender will not inherit the parent logger's appender, or the logs will be output twice in the file
log4j.additivity.com.chuanliu.platform.activity.platform.activity = false

log4j.category.com.chuanliu.platform.activity.solr = info, solr
log4j.additivity.com.chuanliu.platform.activity.platform.activity.solr = false

###### activity full log: contains all of the log ####
#full
log4j.appender.full = org.apache.log4j.DailyRollingFileAppender
log4j.appender.full.File = ${LogFile.Location}/full.log
log4j.appender.full.DatePattern = '.'yyyy-MM-dd
log4j.appender.full.layout = org.apache.log4j.PatternLayout
log4j.appender.full.layout.cOnversionPattern= %d [%t] %-5p %c{1} - %m%n
log4j.appender.full.ImmediateFlush = true
log4j.appender.full.append = true

######activity full log ####

######activity solr log : only contain the log in searcher####
#solr
log4j.appender.solr = org.apache.log4j.DailyRollingFileAppender
log4j.appender.solr.File = ${LogFile.Location}/solr.log
log4j.appender.solr.DatePattern = '.'yyyy-MM-dd
log4j.appender.solr.layout = org.apache.log4j.PatternLayout
log4j.appender.solr.layout.cOnversionPattern= %d [%t] %-5p %c{1} - %m%n
log4j.appender.solr.ImmediateFlush = true
log4j.appender.solr.append = true
######activity solr log ####

# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.COnversionPattern=[%d][%p]%t: %m%n

# log sql for mybatis 
log4j.logger.mybatis =TRACE


org.springframework.web=debug

 

这样经过测试,你会发现,所有的log都进入了full.log中,而只有com.chuanliu.platform.activity.solr下的日志输出进入了solr.log.

 

另外对于日志的输出位置, ${LogFile.Location},我们可以在不同环境的配置文件中自定义LogFile.Location的值,比如在代表本地环境的dev.properties中,定义LogFile.Location=C://logs

代表测试环境的qa.properties中,定义LogFile.Location=/usr/local/var/logs,同样在生产环境中定义相同的值为:LogFile.Location=/usr/local/var/logs,这样在不同环境下就会在不同路径下生成不同的log文件。

 

其实,经过测试后,没有这么麻烦,我们可以统一将windows和linux的log输出配置到同一个地方,即上面我们可以统一的将输出设置为/usr/local/var/logs,这样的设置在linux中,大家都能理解,但在windows中,可能不是那么好理解,在windows中,/usr/local/var/log有2层含义:

 

1、如果是在eclipse中执行这些日志输出的类的方法,那么将在workspace所在的磁盘,例如E盘中创建目录/usr/local/var/log,并输出full.log和solr.log.

 

2、如果是在tomcat中应用执行日志的输出,那边就是在tomcat所在的磁盘中,例如D盘中创建目录/usr/local/var/log,并输出full.log和solr.log,即便是在eclipse中启动tomcat,这时tomcat的wtpapps目录是在eclipse所在的目录,如E盘中,但是真正使用的tomcat是在D盘中的,那么同样是在/usr/local/var/logs中输出如上的日志文件。

 来自:http://www.tools138.com/create/article/20150813/020010118.html


推荐阅读
  • 如何在Linux服务器上配置MySQL和Tomcat的开机自动启动
    在Linux服务器上部署Web项目时,通常需要确保MySQL和Tomcat服务能够随系统启动而自动运行。本文将详细介绍如何在Linux环境中配置MySQL和Tomcat的开机自启动,以确保服务的稳定性和可靠性。通过合理的配置,可以有效避免因服务未启动而导致的项目故障。 ... [详细]
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • Bootstrap 插件使用指南
    本文详细介绍了如何在 Web 前端开发中使用 Bootstrap 插件,包括自动触发插件的方法、插件的引用方式以及具体的实例。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • 本文介绍了如何使用Flume从Linux文件系统收集日志并存储到HDFS,然后通过MapReduce清洗数据,使用Hive进行数据分析,并最终通过Sqoop将结果导出到MySQL数据库。 ... [详细]
  • BIEE中的最终用户界面被称为Presentation Layer(展现层)。展现层呈现的内容与用户在Web报表开发界面中看到的一致,使用业务语言进行描述,隐藏了技术细节,如星型模型。本文将详细介绍展现层的设计要点及其与业务模型层的关系。 ... [详细]
  • 深入解析HTML5字符集属性:charset与defaultCharset
    本文将详细介绍HTML5中新增的字符集属性charset和defaultCharset,帮助开发者更好地理解和应用这些属性,以确保网页在不同环境下的正确显示。 ... [详细]
  • HTML中span元素为何会脱离li元素对齐?
    在HTML布局中,有时会遇到span元素未能与li元素保持对齐的问题。本文将探讨这一现象的原因,并提供解决方案。 ... [详细]
  • MongoDB核心概念详解
    本文介绍了NoSQL数据库的概念及其应用场景,重点解析了MongoDB的基本特性、数据结构以及常用操作。MongoDB是一个高性能、高可用且易于扩展的文档数据库系统。 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • 一、Tomcat安装后本身提供了一个server,端口配置默认是8080,对应目录为:..\Tomcat8.0\webapps二、Tomcat8.0配置多个端口,其实也就是给T ... [详细]
  • 本文旨在解决 MySQL 无法连接到 localhost 的常见问题,并提供详细的步骤来确保 MySQL 服务正确启动和配置。 ... [详细]
  • Webpack 初探:Import 和 Require 的使用
    本文介绍了 Webpack 中 Import 和 Require 的基本概念和使用方法,帮助读者更好地理解和应用模块化开发。 ... [详细]
author-avatar
lucksy689
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有