在这里,我们将给大家分享关于我们可以使用log4j来创build基于级别的日志文件的知识,让您更了解使用log4j记录日志的步骤的本质,同时也会涉及到如何更有效地ApacheLog4jAudit1.0
在这里,我们将给大家分享关于我们可以使用log4j来创build基于级别的日志文件的知识,让您更了解使用log4j记录日志的步骤的本质,同时也会涉及到如何更有效地Apache Log4j Audit 1.0.1 发布,基于 Log4j 的日志框架、DRUID怎么使用log4j把所有执行的sql记录到.log日志文件?求配置参考、java – 使用log4j在mule中自定义日志文件名、java – 使用log4j每天创建新的日志文件的内容。
本文目录一览:- 我们可以使用log4j来创build基于级别的日志文件(使用log4j记录日志的步骤)
- Apache Log4j Audit 1.0.1 发布,基于 Log4j 的日志框架
- DRUID怎么使用log4j把所有执行的sql记录到.log日志文件?求配置参考
- java – 使用log4j在mule中自定义日志文件名
- java – 使用log4j每天创建新的日志文件
我们可以使用log4j来创build基于级别的日志文件(使用log4j记录日志的步骤)
我创build了一个应用程序,使用log4j将所有基于级别的日志存储在单个文件中,但在当前情况下,单个文件将保存所有级别的日志,如ALL,INFO,ERROR,FATAL,WARN,DEBUG等。 。因为在我的应用程序中,我有一个选项说一个select框,当我select错误,那么它应该只显示错误日志,如果我select信息,那么它应该只有INFO日志。
我正在parsing日志文件以获取基于特定级别的相应日志,但在这种情况下,如果日志文件非常大,则需要更多时间。
我想到的一个解决scheme是为每个级别维护单独的日志文件,以便我们可以避免分析
想知道大家对此的想法。 如果这是好的,我们如何重新定向基于级别的日志来分隔日志文件,如ERROR日志到appError.log,INFO日志到appInfo.log,以及一个通用的日志文件来保存所有基于级别的日志。
使用Multicast UDP的Cnetworkinglogging器?
为什么apache.commons.logging.Log不会loggingdebugging级别?
从实时(更新)日志文件使用Windows PowerShell筛选string
如何在Windows中旋转tomcat日志? 什么是最好的方法?
同时写入多个系统日志工具?
我的log4j.properties如下所示
# LOG4J configuration log4j.rootLogger=DEBUG,Appender1,Appender2 log4j.appender.Appender1=org.apache.log4j.ConsoleAppender log4j.appender.Appender1.layout=org.apache.log4j.PatternLayout log4j.appender.Appender1.layout.ConversionPattern=%d [%t] %-7p %10c{1} - %m%n log4j.appender.Appender2=org.apache.log4j.FileAppender log4j.appender.Appender2.File=${appRootPath}/WEB-INF/logs/LogDemos.log log4j.appender.Appender2.layout=org.apache.log4j.PatternLayout log4j.appender.Appender2.layout.ConversionPattern=%d [%t] %-7p %10c{1} - %m%n
parsing方法如下所示
Scanner scanner = new Scanner(new File(ctx.getRealPath("/")+"/WEB-INF/logs/LogDemos.log")); while(scanner.hasNext()) { String level = request.getParameter("level"); String logs = scanner.nextLine(); String regex = "(\d{4}-\d{2}-\d{2}) (\d{2}:\d{2}:\d{2},\d{3}) \[(.*)\] ([^ ]*) +([^ ]*) - (.*)$"; Pattern p = Pattern.compile(regex); Matcher m = p.matcher(logs); if (m.matches() && m.groupCount() == 6) { String date = m.group(1); String time = m.group(2); String threadId = m.group(3); String priority = m.group(4); String category = m.group(5); String message = m.group(6); if(priority.trim().equalsIgnoreCase(level.trim())) { logsList.add(logs); System.out.println("date: " + date); System.out.println("time: " + time); System.out.println("threadId: " + threadId); System.out.println("priority: " + priority); System.out.println("category: " + category); System.out.println("message: " + message); } else { logsList.add(logs); } } } session.setAttribute("logs",logsList); scanner.close();
如何让Log4perl每天旋转我的日志?
黑匣子types的数据logging
在Windows应用程序中logging(跟踪)指南
系统日志在日志旋转后停止logging
当NTEventLogHandler引发exception时,如何使用Python 2.7写入Windows系统日志
如果你使用org.apache.log4j.varia.LevelRangeFilter ,你可以按如下操作(对于INFO和ERROR ):
# LOG4J configuration log4j.rootLogger=DEBUG,OnlyInfo,OnlyError # Only INFO log4j.appender.OnlyInfo=org.apache.log4j.FileAppender log4j.appender.OnlyInfo.File=${appRootPath}/WEB-INF/logs/info.log log4j.appender.OnlyInfo.File=logs/info.log log4j.appender.OnlyInfo.layout=org.apache.log4j.PatternLayout log4j.appender.OnlyInfo.layout.ConversionPattern=%d [%t] %-7p %10c{1} - %m%n log4j.appender.OnlyInfo.filter.A=org.apache.log4j.varia.LevelRangeFilter log4j.appender.OnlyInfo.filter.A.LevelMin=INFO log4j.appender.OnlyInfo.filter.A.LevelMax=INFO log4j.appender.OnlyInfo.filter.A.AcceptOnMatch=true # Only ERROR log4j.appender.OnlyError=org.apache.log4j.FileAppender log4j.appender.OnlyError.File=${appRootPath}/WEB-INF/logs/error.log log4j.appender.OnlyError.layout=org.apache.log4j.PatternLayout log4j.appender.OnlyError.layout.ConversionPattern=%d [%t] %-7p %10c{1} - %m%n log4j.appender.OnlyError.filter.A=org.apache.log4j.varia.LevelRangeFilter log4j.appender.OnlyError.filter.A.LevelMin=ERROR log4j.appender.OnlyError.filter.A.LevelMax=ERROR log4j.appender.OnlyError.filter.A.AcceptOnMatch=true
连接到Log4J的默认假设是,只要您关心某个级别的消息(例如INFO),那么您也会关心更重要的消息(例如ERROR)。 您可以在appenders上设置记录器和阈值级别,以过滤掉低于某个重要级别的消息,但是如果要将INFO消息发送(例如)INFO消息到特定的appender,而不是WARN,ERROR和FATAL,那么实现即通过应用一个过滤器 。
属性配置机制不支持过滤器,所以您将不得不切换到log4j.xml配置样式。 以下配置示例来自Log4J wiki :
<appender name="info-out"> <param name="File" value="info.log"/> <layout> <param name="ConversionPattern" value="%m%n"/> </layout> <filter> <param name="LevelToMatch" value="info" /> <param name="AcceptOnMatch" value="true"/> </filter> <filter/> </appender>
总结
以上是小编为你收集整理的我们可以使用log4j来创build基于级别的日志文件全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
Apache Log4j Audit 1.0.1 发布,基于 Log4j 的日志框架
Log4j Audit 1.0.1 发布
Log4j Audit 提供了一个日志框架,用于定义监听事件。然后使用 Log4j 记录它们。 该框架侧重于定义事件并为应用程序提供记录机制。Log4j Audit 通过定义自己的 AuditMessage 构建在 Log4j 上。
此版本的变化包括:
LOG4J2-2428:使用 AuditExceptionHandler 进行验证异常。
LOG4J2-2443:修复验证异常中的不一致性。
LOG4J2-2440:AuditEvents 应提供一些基本的
toString()
LOG4J2-2429:在 AuditEvent 上设置 exceptionHandler 将其设置为 一个
ThreadContext
变量。LOG4J2-2421:将详细参数添加到
Log4j
审计Maven插件。LOG4J2-2421:
AbstractEventLogger.logEvent
不检查是否缺少必需的上下文属性。LOG4J2-2417:更好地处理可选属性。
LOG4J2-2420:
RequestContextFilter
日志记录清理。LOG4J2-2442:规范化记录的事件名称
AbstractEventLogger.logEvent
。LOG4J2-2431:缩小
getEvent
的返回类型。
Apache Log4j Audit 1.0.1运行在 Java 8 或更高版本。
下载链接 http://logging.apache.org/log4j-audit/latest/download.html
DRUID怎么使用log4j把所有执行的sql记录到.log日志文件?求配置参考
需求说明:使用druid作为数据库连接池,拦截所有执行的SQL语句
不是使用druid内置昂的监控servlet页面 (/druid/index.html,这个已实现,可以正常访问) 监控的servlet页面可以拦截并看到所有执行的sql
而是利用log4j、配置log4j.properties在.log日志文件里记录。(我想不但可以通过上面的看到,而且可以自动记录到.log日志文件中)
问题: 根据官方文档,进行了配置,可是 官方文档最关键的地方 log4j.properties里怎么配置的druid 拦截没有任何示例,在这里卡住了。
我的配置如下:
1、XML配置 datasrource (可以正常工作)
<context:property-placeholder location="classpath:onelikeyouConfig.properties"/> <bean id="dataSource"init-method="init" destroy-method="close" > <!-- 配置监控统计拦截的filters --> <property name="filters" value="config,stat,log4j" /> <!-- 基本属性 url、user、password --> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <!-- 配置初始化大小、最小、最大 --> <property name="initialSize" value="1" /> <property name="minIdle" value="1" /> <property name="maxActive" value="20" /> <!-- 配置获取连接等待超时的时间 --> <property name="maxWait" value="60000" /> <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --> <property name="timeBetweenEvictionRunsMillis" value="60000" /> <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --> <property name="minEvictableIdleTimeMillis" value="300000" /> <property name="validationQuery" value="SELECT ''x''" /> <property name="testWhileIdle" value="true" /> <property name="testOnBorrow" value="false" /> <property name="testOnReturn" value="false" /> <!-- 打开PSCache,并且指定每个连接上PSCache的大小 --> <!--如果用Oracle,则把poolPreparedStatements配置为true,mysql可以配置为false。--> <!--<property name="poolPreparedStatements" value="false" />--> <!--<property name="maxPoolPreparedStatementPerConnectionSize" value="20" />--> <!--config.file=classpath:onelikeyouConfig.properties 提示解密 properties文件中必须有config.decrypt=true--> <!--druid.stat.slowSqlMillis=5000 用来配置SQL慢的标准,执行时间超过slowSqlMillis的就是慢--> <property name="connectionProperties" value="config.file=classpath:onelikeyouConfig.properties;druid.stat.slowSqlMillis=5000" /> <!--用来配置SQL慢的标准,执行时间超过slowSqlMillis的就是慢--> </bean>
2、log4j配置
log4j.rootLogger=INFO, normalOutput, errorOutPut ## 需要到第二天才会自动改名YYYY-MM-DD 之类的文件名 要调试 直接改系统日期 重启tomcat ## 写入数据库中的表LOG4J的Message字段中,内容%d(日期)%c: ## 日志信息所在地(类名)%p: 日志信息级别%m: 产生的日志具体信息 %n: 输出日志信息换行 log4j.appender.normalOutput=org.apache.log4j.DailyRollingFileAppender log4j.appender.normalOutput.DatePattern=''_''yyyy-MM-dd''.log'' log4j.appender.normalOutput.File=${webapp.root}/WEB-INF/logs/${yyyy-MM-dd}onelikeyou_APP log4j.appender.normalOutput.MaxFileSize=100k log4j.appender.normalOutput.layout=org.apache.log4j.PatternLayout log4j.appender.normalOutput.layout.ConversionPattern=[%-5p] [%t]:%d %c %L - %m%n log4j.appender.errorOutPut=org.apache.log4j.DailyRollingFileAppender log4j.appender.errorOutPut.DatePattern=''_''yyyy-MM-dd''.log'' log4j.appender.errorOutPut.Threshold = druid.sql.Statement log4j.appender.errorOutPut.File=${webapp.root}/WEB-INF/logs/onelikeyou_ERROR log4j.appender.errorOutPut.MaxFileSize=100k log4j.appender.errorOutPut.layout=org.apache.log4j.PatternLayout log4j.appender.errorOutPut.layout.ConversionPattern=[%-5p] [%t]:%d %c %L - %m%n目前的日志配置是( 每天生成2个.log文件 可以正常工作)
一个总的生成.log文件(log.info/error..都会在这个里面),
一个log.error("错误信息输出") ..专门生成一个.log文件 (只显示error信息)
上面XML文件里已经加入了 stat过滤器,可以正常看到/druid/index.html 这里 servlet的监控页面,可以看到拦截的所有sql以及其他信息,
也加入了log4j过滤器 可是,
我也想把 在 /druid/index.html 这里 servlet的监控页面看到拦截的所有sql 自动记录到.log文件中去,
该如何配置druid呢?或者说log4j.properties里该添加或修改些什么?
配置过很多遍了,没一次成功的。。
有配置成功过的帮帮忙吧,多谢了!
java – 使用log4j在mule中自定义日志文件名
这是log4j.xml的一个片段
<RollingFile name="Rolling-Async-Perf" fileName="/usr/local/mule/logs/${app_name}.log" filePattern="./logs/${date:yyyy-MM}/perf-%d{yyyy-MM-dd}-%i.log.gz" immediateFlush="false">
以下是我在加载与log4j.xml相关的属性的类中设置application_name的值的方法
System.setProperty("app_name","AppName");
但是,生成的文件名为${app_name} .log而不是AppName.log.
有关如何根据mule中的自定义属性获取mule来获取文件名称的任何想法?
解决方法
1)在MULE_HOME / conf / wrapper.conf文件中添加一个属性,例如:
wrapper.java.additional.15=-Dapp_name=AppName
或2)在log4j2.xml文件example here的Configuration元素内:
<Properties> <Property name="app_name">AppName</Property> </Properties>
java – 使用log4j每天创建新的日志文件
配置文件,每天晚上12点新文件将生成和文件
name应该 – 输出-log-of-MyProjectName-HostName-2013-Dec-10.txt
名称).我的配置文件是这样的 –
log4j.appender.FILE = org.apache.log4j.DailyRollingFileAppender log4j.appender.FILE.File = ${log}/log.out log4j.appender.FILE.DatePattern = '.' yyyy-MM-dd-a
它每天都在创建新文件,但它会在文件名后附加日期.
请帮我.提前致谢.
解决方法
Here is example
Here is another stackoverflow question like yours
关于我们可以使用log4j来创build基于级别的日志文件和使用log4j记录日志的步骤的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Apache Log4j Audit 1.0.1 发布,基于 Log4j 的日志框架、DRUID怎么使用log4j把所有执行的sql记录到.log日志文件?求配置参考、java – 使用log4j在mule中自定义日志文件名、java – 使用log4j每天创建新的日志文件等相关内容,可以在本站寻找。
本文标签: