❶ java指定日志配置路径命令
单独的Java程序包, 需要通过命令java -jar或java -cp的方式启动;我们可以在启动命令中加入系统运行时变量, 在log4j加载配置文件之前通过System.getProperties(“path”)读取此变量, 即可实现灵活加载当前路径.(1) 启动脚本设置:假设当前项目的目录结构为:/Projects/KafkaConsumer丨 bin 项目的启动脚本丨 conf 项目的配置文件丨 lib 项目的其他依赖包丨 bogs 项目的日志输出路径启动脚本位于bin目录下, 内容示例如下:# 获取当前脚本所处的目录, 然后进入其上级目录, 最后pwd输出该目录, 最终的结果是/Project/KafkaConsumerbase_dir=$(cd `dirname $0`; cd ..; pwd)# 获取Java运行程序的位置, 并指定主类java_bin=$(which java)main_class=”org.shoufeng.elastic.ConsumerMain”# 通过-cp、扩展CLASSPATH、指定主类的方式启动项目, # 并通过“姿册-D”的方式向此程序的运行时并桐环境中设置当前项目的路径,# 即可在程序中通过System.getProperty(“base.dir”)获取此路径 nohup ${java_bin} -Dbase.dir=${base_dir} -cp ${CLASSPATH}:${base_dir}/conf:${base_dir}/lib/* ${main_class} >> /dev/null &(2) Java程序读取变量:实log4j的FileAppender本身支持动态设置文件路径, 如:log4j.appender.logfile.File=${base.log}/logs/app.log其中“${base.log}”是绝册坦一个变量, 会被System Property中的base.log的值代替, 代码中的使用方式为:public static void main(String[] args) { // 获取系统运行时变量中的日志文件的输出路径 // 此变量需要在启动命令中通过-D的方式设置 String baseDir = System.getProperty(“b
❷ 如何查看 log4j 加载 哪个 配置
自动加载配置文件抄:袭(1)如果采用log4j输出日志,要对log4j加载配置文件的过程有所了解。log4j启动时,默认会寻找source folder下的log4j.xml配置文件,若没有,会寻找log4j.properties文件。然后加载配置。配置文件放置位置正确,不用在程序中手动加载log4j配置文件。如果将配置文件放到了config文件夹下,在build Path中设置下就好了。若要手动加载配置文件如下:(1)PropertyConfigurator.configure("log4j.properties") 默认读取的是项目根目录的路径。此时的log4j.properties要放在项目目录下。
❸ 【日志】Log4j2配置
在同步日志模式下, Logback的性能是最糟糕的,log4j2的性能无论在同步日志模式还是异步日志模式下都是最佳的。本章主要介绍Spring Boot如何集成并配置使用Log4j2
引入Log4j2依赖包,其它依赖和Logback一样,使用SLF4J统一输出
然后需要在resource下面添加log4j2.xml配置文件,当然了如果你不添加,springboo会提示你没有对应文件,并使用默认的配置文件,这个时候级别可以在application.properties中配置
和logback配置类似,主要是含有loggers、appenders,其中loggers由logger,root组成。appenders由console(控制台),File、RollingFile(输出文件)组成,作用和配置和logback差不多
(1)Console 用来定义输出到控制台的Appender,主要设置输出格式和level级别
ThresholdFilter: 定义打印级别,onMismatch值设置是否拒绝其它 (2)File 用来定义输出到指定位置的文件的Appender
(3)RollingFile 用来定义超过指定条件自动删除旧的,创建新的Appender
参数说明:
Root节点用来指定项目的根日志,如果没有单独指定Logger,那么就会默认使用该Root日志输出
参数说明:
变量配置,类似常量定义
默认情况下springboot是不将日志输出到日志文件中,这里对日志框架的支持有两种配置方式(和logback一样): (1)application.properties 或 application.yml (系统层面) (2)logback-spring.xml (自定义文件方式)
默认名log4j2-spring.xml,可以省下在application.yml中配置,如果自定义了文件名,需要在application.yml中配置
此种方式可以处理比较复杂的情况,比如区分 info 和 error 日志、每天产生一个日志文件。
通过在DefaultRolloverStrategy 标签下添加Delete标签实现,保留7天的日志
IfLastModified .age要和filePattern精确的时间一致, 否则貌似无效.
❹ java工程中如何使用log4j输出指定路径日志文件,是java工程,不是web工程,谢谢
此文档放在项目编译文件.class相同的位置### set log levels ###log4j.rootLogger = debug , stdout , D### 输出到控制台 ###log4j.appender.stdout = org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target = System.outlog4j.appender.stdout.layout = org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{1}:%L – %m%n### 输出到日志文件 ###log4j.appender.D = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.D.File = logs/log.loglog4j.appender.D.Append = truelog4j.appender.D.Threshold = DEBUGlog4j.appender.D.layout = org.apache.log4j.PatternLayoutlog4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] – [ %p ] %m%n### 保存异常信息到单独文件 ###log4j.appender.D = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.D.File = logs/error.loglog4j.appender.D.Append = truelog4j.appender.D.Threshold = ERRORlog4j.appender.D.layout = org.apache.log4j.PatternLayoutlog4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] – [ %p ] %m%n配置获取方法: PropertyConfigurator.configure( "D:\\Project Files\\myeclipse\\commontest\\bin\\log\\log4j\\log4j.properties" ); Logger log=Logger. getLogger(TestLog4j.class); log.warn( "嘿嘿"); log.debug( "呜呜"); log.error( "错啦");
❺ 如何用log4j输出多个自定义日志文件
轮袭log4j输出多个自定义日和伏志文件 如果在实际应用中需要输出独立的日志文件,怎样才能把所需的内容从原有日志中分离,形成单独的日志文件呢? 先看一个常见的log4j.properties文件,它是在控制台和test.log文件中记录日志: 复制代码 代码如下唤桐携: log4j.rootLogger=DEBUG, stdout, logfile log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] – %m%n log4j.appender.logfile=org.apache.log4j.RollingFileAppender log4j.appender.logfile.File=log/test.log log4j.appender.logfile.MaxFileSize=128MB log4j.appender.logfile.MaxBackupIndex=3 log4j.appender.logfile.layout=org.apache.log4j.PatternLayout log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) – %m%n 如果在同一类中需要输出多个日志文件呢?其实道理是一样的,先在Test.java中定义: 复制代码 代码如下: private static Log logger1 = LogFactory.getLog("mylogger1"); private static Log logger2 = LogFactory.getLog("mylogger2"); log4j.properties中配置如下: 复制代码 代码如下: log4j.logger.mylogger1=DEBUG,test1 log4j.appender.test1=org.apache.log4j.FileAppender log4j.appender.test1.File=log/test1.log log4j.appender.test1.layout=org.apache.log4j.PatternLayout log4j.appender.test1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) – %m%n log4j.logger.mylogger2=DEBUG,test2 log4j.appender.test2=org.apache.log4j.FileAppender log4j.appender.test2.File=log/test2.log log4j.appender.test2.layout=org.apache.log4j.PatternLayout log4j.appender.test2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) – %m%n 不同日志要使用不同的logger(如输出到test1.log的要用logger1.info("abc"))。 还有一个问题,就是这些自定义的日志默认是同时输出到log4j.rootLogger所配置的日志中的,如何能只让它们输出到自己指定的日志中呢?别急,这里有个开关: log4j.additivity. mylogger1 = false 它用来设置是否同时输出到log4j.rootLogger所配置的日志中,设为false就不会输出到其它地方了。 但是这种方式有个小缺陷,那就是打印的日志中类名只能是mylogger或者mylogger2。 2 动态配置路径 若程序需要的.日志路径需要不断的变化,而又不可能每次都去改配置文件,此时可以利用环境变量来解决。 log4j的配置如下: 复制代码 代码如下: log4j.rootLogger=DEBUG,INFOLOG,DEBUGLOG #info log log4j.appender.INFOLOG =org.apache.log4j.DailyRollingFileAppender log4j.appender.INFOLOG.File= ${log.dir}/${log.info.file} log4j.appender.INFOLOG.DatePattern=.yyyy-MM-dd log4j.appender.INFOLOG.Threshold=INFO log4j.appender.INFOLOG.layout=org.apache.log4j.PatternLayout log4j.appender.INFOLOG.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) – %m%n #debug log log4j.appender.DEBUGLOG =org.apache.log4j.RollingFileAppender log4j.appender.DEBUGLOG.File= ${log.dir}/${log.debug.file} log4j.appender.DEBUGLOG.Threshold=DEBUG log4j.appender.DEBUGLOG.MaxFileSize=128MB log4j.appender.DEBUGLOG.MaxBackupIndex=3 log4j.appender.DEBUGLOG.layout=org.apache.log4j.PatternLayout log4j.appender.DEBUGLOG.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) – %m%n 此时,在使用log打印日志之前,需要利用System定义日志的输出路径和文件名的环境变量: 复制代码 代码如下: System.setProperty(“log.dir”, logDir); System.setProperty(“log.info.file”, infoLogFileName); System.setProperty(“log.debug.file”, debugLogFileName); 附:Pattern参数的格式含义 %c 输出日志信息所属的类的全名 %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },输出类似:2013-8-19- 22:10:28 %f 输出日志信息所属的类的类名 %l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行 %m 输出代码中指定的信息,如log(message)中的message %n 输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n” %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推 %r 输出自应用启动到输出该日志信息所耗费的毫秒数 %t 输出产生该日志事件的线程名
❻ log4j在java的web项目中怎么用的,如何配置等等。。
在web.xml中添加配置:<!– 配置log4j配置文件的路径,可以是xml或 properties(此参数必须配)–> 下面使用了内classpath 参数指定log4j.properties文件的位置容,这样log4j的配置文件就不用非要放到src的下面:<context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:config/log4j/log4j.properties</param-value></context-param> 使用spring的监听器,当应用启动时来读取log4j的配置文件<listener><listener-class>org.springframework.web.util.Log4jConfigListener</listener-class></listener>
❼ Java log4j 配置文件怎么写,可以输出log.info("")中的内容到指定目录的.log文件
log4j.rootLogger=info, ServerDailyRollingFile, stdout log4j.appender.ServerDailyRollingFile=org.apache.log4j.DailyRollingFileAppender log4j.appender.ServerDailyRollingFile.DatePattern='.'yyyy-MM-dd log4j.appender.ServerDailyRollingFile.File=/usr/logs/mylog.loglog4j.appender.ServerDailyRollingFile.layout=org.apache.log4j.PatternLayout log4j.appender.ServerDailyRollingFile.layout.ConversionPattern=%d – %m%n log4j.appender.ServerDailyRollingFile.Append=truelog4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} %p [%c] %m%n