`

Logback+AOP 小试日志处理

    博客分类:
  • J2EE
阅读更多

    这几天用了用Logback感觉挺爽的,性能上比log4j 1改善了不少performance(据说前些天出来的log4j 2 又相对于Logback在performance上又提升了不少),而且功能还是很强大的。

   提到Logback就不得不了解SLF4j(Sample Logging Facade for java) Java简单的日志门面,从它的命名我们不难看出它是一个通用的logging接口,它兼容了Log4j 1 (Log4j 2 现在不得而知)、java.util.logging和Jakarta Commons Logging,这几个比较流行的日志框架,而Logback是SLF4j的默认实现。

  使用Logback需要使用的jar:

            logback-core-1.0.13.jar

            logback-classic-1.0.13.jar

            slf4j-api-1.7.5.jar

            jcl-over-slf4j-1.7.5.jar    将common-logging.jar与slf4j对接,然后由Logback输出

Logback会在classpath 中按照如下顺序读取配置文件:

  1. logback.groovy
  2. logback-test.xml
  3. logback.xml

上例子:

<?xml version="1.0" encoding="UTF-8" ?>

<configuration debug="false">
	<property name="logdir" value="D:/log"></property>
    <!-- 控制台 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
        </encoder>
    </appender>
    <!-- 出错日志 appender  -->
    <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 按天回滚 daily -->
            <!-- logdir 在maven profile里配置 -->
            <fileNamePattern>${logdir}/errorlog-%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的历史 60天 -->
            <maxHistory>60</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
        </encoder>
    </appender>
    <!-- 访问日志 appender  -->
    <appender name="COMMON" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <Encoding>UTF-8</Encoding>
        <file>${logdir}/commonlog.log</file>
         <!--按每小时滚动文件,如果一个天内达到10M(取决于fileNamePattern中的%d{yyyy-MM-dd_HH}还是%d{yyyy-MM-dd})也会回滚文件,回滚文件将会被压缩成zip格式 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 按天回滚 daily -->
            <fileNamePattern>${logdir}/commonlog-%d{yyyy-MM-dd}.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                  <maxFileSize>10M</maxFileSize>
             </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="info"/>

    <!--错误日志-->
    <logger name="error" level="info">
    	<appender-ref ref="STDOUT"/>
        <appender-ref ref="ERROR"/>
    </logger>

    <logger name="com.sdw.soft" level="debug">
         <appender-ref ref="STDOUT"/>
         <appender-ref ref="COMMON"/>
    </logger>

</configuration>


    为了方便日志记录而又不手动重复一遍又一遍写private static final Logger logger = LoggerFactory.logger(XXX);

一下使用了AOP偷了懒。大笑

/**
 * @Author: Sonicery_D
 * @Date: 2014-9-10
 */
@Component
@Aspect
public class LoggerUtils {
	
	private static final Logger logger = LoggerFactory.getLogger(LoggerUtils.class);
	
	@Pointcut(value="execution(* com.sdw.soft..*Service.*(..))")
	public void printLog(){
		
	}
	@Before(value="printLog()")
	public void beforeExecute(JoinPoint jp){
		String methodName = jp.getSignature().getName();
		String className = jp.getTarget().getClass().getName();
		StringBuffer sb = new StringBuffer("类["+className+"]-方法["+methodName+"]开始执行------");
		int i = 1;
		for(Object obj : jp.getArgs()){
			if(obj instanceof String){
				sb.append("arg"+i+"="+obj.toString()+",");
			}
			i++;
		}
		logger.info("AOP 日志拦截---{}",sb.toString());
	}
}

 

分享到:
评论

相关推荐

    linux平台centos7系统 - ELK+logback+kafka+nginx 搭建分布式日志分析平台.doc

    - **logback+kafka**: 日志通过logback生成后,经kafka消息队列传递到Logstash,Logstash再将处理后的日志存储到Elasticsearch,最后通过Kibana进行分析。 - **Logstash直接读取日志文件**:Logstash直接从日志文件...

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

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

    logback+self4j 进行日志记录

    **日志记录在软件开发中扮演着至关重要的角色,它帮助开发者追踪程序运行状态,定位错误,优化性能。...在SelfFourJ这个DEMO中,你可以亲身体验到这些概念的实际应用,进一步加深对日志处理的理解。

    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"的组合可以帮助开发者实现高效、规范的日志管理和异常处理,提升应用的质量和稳定性。通过理解和利用这些工具,我们可以更好地维护和优化我们的Android应用。

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

    SpringBoot框架以其简洁的配置和强大的功能深受开发者喜爱,而Logback和Slf4j则是Java世界中广泛使用的日志处理库。本文将深入探讨如何利用Logback和Slf4j在SpringBoot项目中实现日志的敏感信息脱敏,以保护用户隐私...

    logback+web项目Demo

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

    slf4j+logback+springmvc+maven小例子

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

    SpringBoot+AOP日志服务

    SpringBoot+AOP日志服务是将流行的Java框架Spring Boot与面向切面编程(AOP)技术结合,用于实现高效、灵活的日志管理。在Spring Boot项目中,AOP可以帮助我们以非侵入式的方式记录应用运行时的行为,尤其是对于业务...

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

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

    struts+spring+mybatis+logback+easyui

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

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

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

    Maven+SpringMVC+MyBatis+Logback+WebSocket

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

    logback+slf4j使用

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

    logback+slf4j打印工具类

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

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

    在实际开发中,我们可能还需要根据项目需求调整日志策略,例如,增加异步日志处理以提高性能,或者配置日志滚动和大小限制。同时,通过使用`logging.level.&lt;package&gt;=&lt;level&gt;`在SpringBoot的`application.properties...

    logback + slf4j web项目源码

    综上所述,这个项目可能包含了一个完整的Web应用程序,具备日志记录功能,同时处理JSON和XML数据的转换,以满足不同场景下的数据交互需求。通过研究这个源码,开发者可以学习到如何在实际项目中有效地使用Logback和...

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

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

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

    Logback提供了丰富的日志级别(如DEBUG, INFO, WARN, ERROR等),可以根据需求调整日志输出级别。在SpringBoot项目中,我们可以通过配置logback-spring.xml文件来定制日志输出格式、路径、级别等,确保日志管理和...

    jquery+bootstrap+SSM+Maven+logback+echarts基于ssm框架实现的教师科研信息管理系统

    4、 使用AOP切面编程结合日志框架logback可记录下所有用户在什么时间做了什么操作及其ip地址,生成的日志文件存放在D:\resource\logs下(若不存在D盘会出错),使用AOP实现事务管理,对可能产生的脏读、不可重复读、...

Global site tag (gtag.js) - Google Analytics