`
yuri_liuyu
  • 浏览: 177926 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

logback+jms appender+filter

阅读更多

上午搞定了使用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 搭建分布式日志分析平台.doc

    【Linux平台CentOS7系统 - ELK+logback+kafka+nginx搭建分布式日志分析平台】 在复杂的IT环境中,日志管理和分析对于诊断问题、优化性能以及确保系统稳定性至关重要。ELK栈(Elasticsearch、Logstash、Kibana)正是...

    SSM+Lucene+logback+Druid开发的开源博客系统

    SSM+Lucene+logback+Druid开发的Java开源博客系统源码 项目描述 网站面向有撰写博客习惯的用户,个人可注册成为网站用户(博主),在系统中创建自己的博文类别、标签,使用Markdown语法创作博文,创作好后将博文...

    logback+slf4j的JAR包和源码

    只要里面的logback-classic-1.1.7,logback-core-1.1.7,slf4j-api-1.7.21的JAR就可以打印出日志信息,而带有source表示对应的JAR包的源代码。可以要也可以不要

    timber+logback+CashHandler

    "timber+logback+CashHandler"的组合提供了一种高效、可定制的日志管理系统,让我们来深入了解一下这个组合的各个部分。 **Timber** Timber是一个轻量级的日志库,由Square公司开发。它扩展了Android原生的Log类,...

    slf4j+logback+springmvc+maven小例子

    在这个“slf4j+logback+springmvc+maven小例子”中,我们看到的是一个结合了这些技术的简单应用。Spring MVC是一个基于Spring框架的轻量级Web MVC框架,它简化了构建交互式、RESTful的Web应用的流程。Maven则是一个...

    logback+slf4j使用

    以下是使用logback+slf4j自定义Appender的详细步骤: 1. **创建Appender类**:首先,你需要创建一个继承自`ch.qos.logback.core.AppenderBase&lt;ILoggingEvent&gt;`的类。在这个类中,你需要覆盖`append()`方法,该方法...

    logback+web项目Demo

    在提供的"Logback+web项目Demo"中,你可以看到如何将Logback集成到一个Web应用程序中,并进行日志输出。这个Demo应该包含了一个简单的Web应用,以及配置好的 `logback.xml` 文件。通过导入Eclipse,你可以直接运行和...

    logback+self4j 进行日志记录

    4. **&lt;filter&gt;** - 可用于控制哪些日志事件被传递给Appender。例如,我们可以使用`LevelFilter`只让特定级别的日志通过。 5. **** - 定义特定类或包的日志级别。这允许我们为不同的部分设定不同的日志级别,例如,...

    Maven+SpringMVC+MyBatis+Logback+WebSocket

    本项目采用了一种常见的技术栈:“Maven+SpringMVC+MyBatis+Logback+WebSocket”,这是一套强大的组合,适合快速开发中大型企业级应用。接下来,我们将详细探讨这些技术及其相互间的协同工作。 1. Maven: Maven是...

    Spring boot+ES5.4+logback+maven 一个框架空工程

    在这个"Spring boot+ES+logback+maven"的框架空工程中,开发者可以快速开始编写业务逻辑,因为所有基础架构组件已经配置好。Elasticsearch 用于存储和搜索日志,Logback 提供日志记录,Spring Boot 管理整个应用生命...

    logback+slf4j打印工具类

    总结来说,"logback+slf4j打印工具类"是一种在Java项目中实现日志记录的有效方式,通过SLF4J的简洁API和Logback的强大功能,可以轻松地定制日志记录策略,例如每天生成一个日志文件。这种工具类的使用,不仅提高了...

    Logback+slf4j【进阶】【实例】.docx

    Logback+SLF4J是Java日志框架的高级组合,提供高效、灵活的日志记录功能。SLF4J(Simple Logging Facade for Java)是一个日志抽象层,允许开发者在运行时插入任意日志实现,而Logback是SLF4J的一个具体实现,它在...

    logback+springboot的基本使用方式.zip

    例如,`&lt;appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"&gt;`将日志输出到控制台,`&lt;appender name="FILE" class="ch.qos.logback.core.FileAppender"&gt;`则输出到指定文件。 3. **layout(布局)...

    struts+spring+mybatis+logback+easyui

    标题 "struts+spring+mybatis+logback+easyui" 暗示了这是一个基于Java的Web开发框架集成方案,常用于构建企业级应用。这个组合包括了四个主要组件和一个前端UI库: 1. **Struts**:Struts是Apache软件基金会的一个...

    logback-async-appender:Logback示例代码,以显示logback JMS异步追加器

    "Logback-async-appender" 指的是 Logback 框架中的异步Appender功能,这是日志记录的一种优化策略,它允许日志事件通过消息队列(如JMS,Java消息服务)以异步方式处理,从而提高应用性能,因为日志处理不会阻塞...

    Logback+Slf4j,基于SpringBoot实现日志脱敏.zip

    《基于SpringBoot的日志脱敏:Logback与Slf4j的实战应用》 在现代的软件开发中,日志系统是不可或缺的一部分,它为开发者提供了系统运行时的详细信息,帮助排查问题,优化性能。SpringBoot框架以其简洁的配置和强大...

    logback + slf4j web项目源码

    "Logback + SLF4J Web项目源码" 提示我们这是一个基于Logback和SLF4J的日志管理系统,用于web应用程序。Logback是Java平台上的一个日志框架,它是一个替代log4j的更高效、更灵活的工具。SLF4J(Simple Logging ...

    hibernate+proxool+logback+mysql 非spring整合.zip

    自己写的hibernate+proxool的demo整合,亲测可用。项目可以拿来做做参考。如果有什么问题 欢迎留言作讨论。使用的话,请自己配置好proxool.xml文件 以及导入resources里面的sql(这里的sql是demo里面的entity表)

    MyEclipse工程文件:SSH+druid+logback+jackson

    综上所述,这个项目采用了成熟的SSH框架进行开发,结合了高效的Druid数据库连接池,强大的日志系统Logback,以及用于JSON处理的Jackson库,构建了一个功能齐全、性能优秀的Java Web应用。这样的组合在企业级应用开发...

    springboot+swagger-ui+PageHelper分页+logback+动态定时

    在本项目中,我们主要探讨的是如何利用SpringBoot框架,集成Swagger-UI、PageHelper、Logback以及动态定时任务的功能。下面将详细讲解这些技术及其整合应用。 首先,SpringBoot是一个由Pivotal团队开发的Java框架,...

Global site tag (gtag.js) - Google Analytics