log4jdebug输出到其他文件中|java工程中如何使用log4j输出指定路径日志文件是java工程不是web工程谢谢

① log4j的使用,即java该如何使用日志文件

java使用日志文件log4j的方法:

1、 新建一个Java工程,导入Log4j包,pom文件中对应的配置代码如下:

<!– log4j support –><dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version></dependency>

2、resources目录下创建log4j.properties文件

### 设置###log4j.rootLogger = debug,stdout,D,E### 输出信息到控制抬 ###log4j.appender.stdout = org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target = System.outlog4j.appender.stdout.layout = org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n### 输出DEBUG 级别以上的日志到=/home/qi/logs/debug.log ###log4j.appender.D = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.D.File = /home/qi/logs/debug.loglog4j.appender.D.Append = truelog4j.appender.D.Threshold = DEBUG log4j.appender.D.layout = org.apache.log4j.PatternLayoutlog4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] – [ %p ] %m%n### 输出ERROR 级别以上的日志到=/home/admin/logs/error.log ###log4j.appender.E = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.E.File =/home/admin/logs/error.log log4j.appender.E.Append = truelog4j.appender.E.Threshold = ERROR log4j.appender.E.layout = org.apache.log4j.PatternLayoutlog4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] – [ %p ] %m%n

3、输出日志的例子如下

package com.java.log;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class Log4JTest { private static final Logger logger = LoggerFactory.getLogger(Log4JTest.class); public static void main(String[] args) { // 记录debug级别的信息 logger.debug("This is debug message."); // 记录info级别的信息 logger.info("This is info message."); // 记录error级别的信息 logger.error("This is error message."); }}

4、输出结果首先,控制台输入如下图所示:

② 如何用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 输出产生该日志事件的线程名

③ log4j2怎么输出日志到文件

、前提条件 系统必须使用LOG4J进行志管理否则效 系统必须包含mons-logging-xxx.jarlog4j-xxx.jar两JAR包XXX版本号 二、操作步骤 1、创建志表 要志持久化必须数据库创建张用存储志信息表表内字段志 主要属性包括:操作类执行打印间志级别志内容 CREATE TABLE RESLOG (LOGID VARCHAR2(20) NOT NULL, CLASS VARCHAR2(200), METHOD VARCHAR2(100), CREATETIME DATE, LOGLEVEL VARCHAR2(50), MSG VARCHAR2(4000)) 存储类类全部路径所CLASS字段度需要比较 2、志管理配置 LOG4J主要两种配置文件.properties.xmlproperties文件基础讲 述关于XML文件配置相信家看完面介绍能轻松完 通LOG4J.PROPERTIES文件第行: log4j.rootLogger= XXX句控制志输想吧志输数据库 则需要XXX添加DBlog4j.rootLogger=INFO,stdout,Platform,db面 句志级别INFO信息输STDOUT,PLATFORMDB (DATABASE) 配置信息LOG4J知道用户想信息存入数据库接我要 配置数据库相关信息(包括缓存数据库连接信息执行SQL)配置信息: ###JDBCAppender log4j.appender.db = org.apache.log4j.jdbc.JDBCAppender //配置选择使用JDBCAppender志信息存储数据库要做其操作自写类继承JDBCAppenderOK log4j.appender.db.BufferSize=1 //配置告诉LOG4J条志信息才存入数据库我1,说条查条显产环境影响系统性能 log4j.appender.db.driver=oracle.jdbc.driver.OracleDriver //配置告诉LOG4J做数据库存储所用驱 log4j.appender.db.URL=jdbc:oracle:thin:@:: //配置数据库连接URL用说都知道 log4j.appender.db.user=XXX log4j.appender.db.password=XXX //面两数据库连接用户名密码 log4j.appender.db.sql=insert into RESLOG (LogId,Class,Method,createTime,LogLevel,MSG) values (SQ_RESLOG_LOGID.Nextval,'%C','%M', to_date('%d{yyyy-MM-dd HH:mm:ss}','yyyy-MM-dd HH24:mi:ss'),'%p','%m') //配置告诉LOG4J吧志存储数据库用SQL语句SQ_RESLOG_LOGID.Nextval我建SEQUENCE;‘%C’志CLASS;‘%M’打印志执行类;‘%d’打印间支持格式化;‘%P’志级别包括INFO、DEBUG、ERROR等;‘%m’MSG志内容注意参数区写 log4j.appender.db.layout=org.apache.log4j.PatternLayout 通面配置现再启服务LOG4J自原存储.LOG文件信息同存储数据库

④ 如何使用log4j输出单个级别的log到指定文件

这种情况下,就需要debug、info、warn、error分别进行配置了。之后通过priority属性控制日志实际输出级别就可以。

<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPElog4j:configurationPUBLIC"-//LOGGER""log4j.dtd"><log4j:configurationxmlns:log4j="http://jakarta.apache.org/log4j/"><!–Appenders–><appendername="console"class="org.apache.log4j.ConsoleAppender"><paramname="Target"value="System.out"/><layoutclass="org.apache.log4j.PatternLayout"><paramname="ConversionPattern"value="%-d{yyyy-MM-ddHH:mm:ss,SSS}||||%p||||%m%n"/></layout></appender><!–输出debug日志–><appendername="debug.log"class="org.apache.log4j.DailyRollingFileAppender"><paramname="File"value="d:/tmrpt/log/debug.log"/><paramname="Append"value="true"/><paramname="encoding"value="UTF-8"/><paramname="DatePattern"value="yyyyMMddHH"/><layoutclass="org.apache.log4j.PatternLayout"><paramname="ConversionPattern"value="%-d{yyyy-MM-ddHH:mm:ss,SSS}[%p][%c]-%m%n"/></layout><filterclass="org.apache.log4j.varia.LevelRangeFilter"><paramname="levelMin"value="debug"/><paramname="levelMax"value="debug"/><paramname="AcceptOnMatch"value="true"/></filter></appender><!–输出info日志–><appendername="info.log"class="org.apache.log4j.DailyRollingFileAppender"><paramname="File"value="d:/tmrpt/log/info.log"/><paramname="Append"value="true"/><paramname="encoding"value="UTF-8"/><paramname="DatePattern"value="yyyyMMddHH"/><layoutclass="org.apache.log4j.PatternLayout"><paramname="ConversionPattern"value="%-d{yyyy-MM-ddHH:mm:ss,SSS}[%p][%c]-%m%n"/></layout><filterclass="org.apache.log4j.varia.LevelRangeFilter"><paramname="levelMin"value="info"/><paramname="levelMax"value="info"/><paramname="AcceptOnMatch"value="true"/></filter></appender><!–输出warn日志–><appendername="warn.log"class="org.apache.log4j.DailyRollingFileAppender"><paramname="File"value="d:/tmrpt/log/warn.log"/><paramname="Append"value="true"/><paramname="encoding"value="UTF-8"/><paramname="DatePattern"value="yyyyMMddHH"/><layoutclass="org.apache.log4j.PatternLayout"><paramname="ConversionPattern"value="%-d{yyyy-MM-ddHH:mm:ss,SSS}[%p][%c]-%m%n"/></layout><filterclass="org.apache.log4j.varia.LevelRangeFilter"><paramname="levelMin"value="warn"/><paramname="levelMax"value="warn"/><paramname="AcceptOnMatch"value="true"/></filter></appender><!–输出error日志–><appendername="error.log"class="org.apache.log4j.DailyRollingFileAppender"><paramname="File"value="d:/tmrpt/log/error.log"/><paramname="Append"value="true"/><paramname="encoding"value="UTF-8"/><paramname="DatePattern"value="yyyyMMddHH"/><layoutclass="org.apache.log4j.PatternLayout"><paramname="ConversionPattern"value="%-d{yyyy-MM-ddHH:mm:ss,SSS}[%p][%c]-%m%n"/></layout><filterclass="org.apache.log4j.varia.LevelRangeFilter"><paramname="levelMin"value="error"/><paramname="levelMax"value="error"/><paramname="AcceptOnMatch"value="true"/></filter></appender><!–RootLogger–><root><!–priority配置输出日志级别–><priorityvalue="info"/><appender-refref="console"></appender-ref><appender-refref="info.log"/><appender-refref="debug.log"/><appender-refref="warn.log"/><appender-refref="error.log"/></root></log4j:configuration>

⑤ 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

⑥ 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( "错啦");

⑦ 将console中所有输出通过log4j输出到文件中

log4j.rootLogger=info,stdout,info,debug,errorlog4j.logger.com.mybatis=infolog4j.logger.com.opensymphony.xwork2=infolog4j.logger.java.sql=debuglog4j.logger.org.apache.struts=infolog4j.logger.org.springframework=infolog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c – %m%nlog4j.logger.debug=debuglog4j.appender.debug=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.debug.layout=org.apache.log4j.PatternLayoutlog4j.appender.debug.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c – %m%nlog4j.appender.debug.datePattern='.'yyyy-MM-ddlog4j.appender.debug.Threshold = DEBUGlog4j.appender.debug.append=truelog4j.appender.debug.File=C:/logs/项目名称/debug.loglog4j.logger.error=errorlog4j.appender.error=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.error.layout=org.apache.log4j.PatternLayoutlog4j.appender.error.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c – %m%nlog4j.appender.error.datePattern='.'yyyy-MM-ddlog4j.appender.error.Threshold = ERRORlog4j.appender.error.append=truelog4j.appender.error.File=C\:/logs/项目名称/error.log

⑧ Java怎样使用log4j2向不同文件中写入不同的日志

解决方法 1:看看RoutingAppender,也许你能从这入手。<?xml version="1.0" encoding="UTF-8"?><configuration status="DEBUG" name="MyApp" packages=""> <appenders> <Routing name="Routing"> <Routes pattern="$${ctx:USERNAME}"> <Route> <RollingFile name="user.log" append="true" fileName="users/${ctx:USERNAME}.txt" filePattern="users/archive/${ctx:USERNAME}-%d{MM-dd-yyyy}-%i.txt.gz"> <PatternLayout> <pattern>%d{ISO8601} [%t] %p %c %L – %m%n</pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="50 MB"/> </Policies> </RollingFile> </Route> </Routes> </Routing> </appenders> <loggers> <root level="TRACE"> <appender-ref ref="Routing" level="DEBUG" /> </root> </loggers></configuration>


赞 (0)