上午搞定了使用aop方式来记录日志,根据上回分析,下午继续弄头儿要求的logback+jms appender+日志filter
关于jms appender可是把我头疼坏了,上网查找相关的信息,竟然没有一个成功的案例,于是乎,开始找些英文的论坛文章看,在logback.xml中加入了如下的配置:
<appender name="jms" class="ch.qos.logback.classic.net.JMSQueueAppender">
<InitialContextFactoryName>
org.apache.activemq.jndi.ActiveMQInitialContextFactory
</InitialContextFactoryName>
<ProviderURL>tcp://ip:port</ProviderURL>
<QueueConnectionFactoryBindingName>ConnectionFactory</QueueConnectionFactoryBindingName>
<QueueBindingName>cdata.response.musicproducttest</QueueBindingName>
</appender>
但是始终报一个错误(截取部分)
at javax.naming.NameNotFoundException: data.response.musicproducttest
at at org.apache.activemq.jndi.ReadOnlyContext.lookup(ReadOnlyContext.java:225)
at at javax.naming.InitialContext.lookup(InitialContext.java:392)
at at ch.qos.logback.core.net.JMSAppenderBase.lookup(JMSAppenderBase.java:36)
at at ch.qos.logback.classic.net.JMSQueueAppender.start(JMSQueueAppender.java:109)
不知道为什么,于是请教有经验的同事,读了logback的源码,最终发现,原来是因为logback找不名称为到data.response.musicproducttest的队列,需要在jndi中进行声明,于是加了jndi.properties文件进buildpath,于是问题完美解决!
接下来,需要根据日志的内容,对日志不同输出进行不同队列的写入。先不考虑往队列里发(因为此时,同事正在研究logback源码。。。),我们就指定往文件里写入吧
<appender name="logfile-dao"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator name="myEval">
<expression>message.contains("dao")</expression>
</evaluator>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<Encoding>UTF-8</Encoding>
<File>${log.base}%d{yyyy-MM-dd}.dao.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${log.base}.%d{yyyy-MM-dd}.log.zip</FileNamePattern>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%date [%thread] %-5level %logger{80} - %msg%n</pattern>
</layout>
</appender>
<appender name="logfile-service"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator name="myEval">
<expression>message.contains("service.impl")</expression>
</evaluator>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<Encoding>UTF-8</Encoding>
<File>${log.base}%d{yyyy-MM-dd}.service.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${log.base}.%d{yyyy-MM-dd}.log.zip</FileNamePattern>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%date [%thread] %-5level %logger{80} - %msg%n</pattern>
</layout>
</appender>
配置文件logback.xml中加入了如上代码,主要是<expression>message.contains("dao")</expression> ,<onMatch>ACCEPT</onMatch>和<onMismatch>DENY</onMismatch>,
这三部分的声明,分别是对日志内容的过滤,符合该条件即ACCEPT,不符合就DENY,ok,于是成功解决问题。
分享到:
相关推荐
【Linux平台CentOS7系统 - ELK+logback+kafka+nginx搭建分布式日志分析平台】 在复杂的IT环境中,日志管理和分析对于诊断问题、优化性能以及确保系统稳定性至关重要。ELK栈(Elasticsearch、Logstash、Kibana)正是...
SSM+Lucene+logback+Druid开发的Java开源博客系统源码 项目描述 网站面向有撰写博客习惯的用户,个人可注册成为网站用户(博主),在系统中创建自己的博文类别、标签,使用Markdown语法创作博文,创作好后将博文...
只要里面的logback-classic-1.1.7,logback-core-1.1.7,slf4j-api-1.7.21的JAR就可以打印出日志信息,而带有source表示对应的JAR包的源代码。可以要也可以不要
"timber+logback+CashHandler"的组合提供了一种高效、可定制的日志管理系统,让我们来深入了解一下这个组合的各个部分。 **Timber** Timber是一个轻量级的日志库,由Square公司开发。它扩展了Android原生的Log类,...
在这个“slf4j+logback+springmvc+maven小例子”中,我们看到的是一个结合了这些技术的简单应用。Spring MVC是一个基于Spring框架的轻量级Web MVC框架,它简化了构建交互式、RESTful的Web应用的流程。Maven则是一个...
以下是使用logback+slf4j自定义Appender的详细步骤: 1. **创建Appender类**:首先,你需要创建一个继承自`ch.qos.logback.core.AppenderBase<ILoggingEvent>`的类。在这个类中,你需要覆盖`append()`方法,该方法...
在提供的"Logback+web项目Demo"中,你可以看到如何将Logback集成到一个Web应用程序中,并进行日志输出。这个Demo应该包含了一个简单的Web应用,以及配置好的 `logback.xml` 文件。通过导入Eclipse,你可以直接运行和...
4. **<filter>** - 可用于控制哪些日志事件被传递给Appender。例如,我们可以使用`LevelFilter`只让特定级别的日志通过。 5. **** - 定义特定类或包的日志级别。这允许我们为不同的部分设定不同的日志级别,例如,...
本项目采用了一种常见的技术栈:“Maven+SpringMVC+MyBatis+Logback+WebSocket”,这是一套强大的组合,适合快速开发中大型企业级应用。接下来,我们将详细探讨这些技术及其相互间的协同工作。 1. Maven: Maven是...
在这个"Spring boot+ES+logback+maven"的框架空工程中,开发者可以快速开始编写业务逻辑,因为所有基础架构组件已经配置好。Elasticsearch 用于存储和搜索日志,Logback 提供日志记录,Spring Boot 管理整个应用生命...
总结来说,"logback+slf4j打印工具类"是一种在Java项目中实现日志记录的有效方式,通过SLF4J的简洁API和Logback的强大功能,可以轻松地定制日志记录策略,例如每天生成一个日志文件。这种工具类的使用,不仅提高了...
Logback+SLF4J是Java日志框架的高级组合,提供高效、灵活的日志记录功能。SLF4J(Simple Logging Facade for Java)是一个日志抽象层,允许开发者在运行时插入任意日志实现,而Logback是SLF4J的一个具体实现,它在...
例如,`<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">`将日志输出到控制台,`<appender name="FILE" class="ch.qos.logback.core.FileAppender">`则输出到指定文件。 3. **layout(布局)...
标题 "struts+spring+mybatis+logback+easyui" 暗示了这是一个基于Java的Web开发框架集成方案,常用于构建企业级应用。这个组合包括了四个主要组件和一个前端UI库: 1. **Struts**:Struts是Apache软件基金会的一个...
"Logback-async-appender" 指的是 Logback 框架中的异步Appender功能,这是日志记录的一种优化策略,它允许日志事件通过消息队列(如JMS,Java消息服务)以异步方式处理,从而提高应用性能,因为日志处理不会阻塞...
《基于SpringBoot的日志脱敏:Logback与Slf4j的实战应用》 在现代的软件开发中,日志系统是不可或缺的一部分,它为开发者提供了系统运行时的详细信息,帮助排查问题,优化性能。SpringBoot框架以其简洁的配置和强大...
"Logback + SLF4J Web项目源码" 提示我们这是一个基于Logback和SLF4J的日志管理系统,用于web应用程序。Logback是Java平台上的一个日志框架,它是一个替代log4j的更高效、更灵活的工具。SLF4J(Simple Logging ...
自己写的hibernate+proxool的demo整合,亲测可用。项目可以拿来做做参考。如果有什么问题 欢迎留言作讨论。使用的话,请自己配置好proxool.xml文件 以及导入resources里面的sql(这里的sql是demo里面的entity表)
综上所述,这个项目采用了成熟的SSH框架进行开发,结合了高效的Druid数据库连接池,强大的日志系统Logback,以及用于JSON处理的Jackson库,构建了一个功能齐全、性能优秀的Java Web应用。这样的组合在企业级应用开发...
在本项目中,我们主要探讨的是如何利用SpringBoot框架,集成Swagger-UI、PageHelper、Logback以及动态定时任务的功能。下面将详细讲解这些技术及其整合应用。 首先,SpringBoot是一个由Pivotal团队开发的Java框架,...