`
weiqingfei
  • 浏览: 316728 次
  • 性别: Icon_minigender_1
  • 来自: 黑洞
社区版块
存档分类
最新评论

根据业务归类log文件

    博客分类:
  • Java
阅读更多

当业务比较复杂的时候,会希望按照业务来归类log文件,而不是放到一个文件里。

比如说,我希望按照cotroller单位去划分log文件,并且设定每个log文件的size是10MB,那么可以做一下设置。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<include resource="org/springframework/boot/logging/logback/base.xml" />
    <appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
        <discriminator class="ch.qos.logback.classic.sift.MDCBasedDiscriminator">
            <key>funcid</key>
            <defaultValue>all</defaultValue>
        </discriminator>
        <sift>
            <appender name="debug-${funcid}" class="ch.qos.logback.core.rolling.RollingFileAppender">
            	<encoder>
					<pattern>${FILE_LOG_PATTERN}</pattern>
				</encoder>
                <file>d:/debug-${funcid}.log</file>
				<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
					<fileNamePattern>d:/debug-${funcid}.log.%i</fileNamePattern>
				</rollingPolicy>
				<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
					<MaxFileSize>10MB</MaxFileSize>
				</triggeringPolicy>
            </appender>
        </sift>
    </appender>
    <logger name="jp.co.abc.controller" level="debug">
    	<appender-ref ref="SIFT" />
    </logger>
</configuration>

 这样,我们可以在出力log的时候,设定funcid来决定,log出力到哪个file里。

每次设置肯定会比较繁琐,我们可以在HandlerInterceptor里来设定funcid,这样就不用每次出力log时都设定funcid了。

public class LogConfigInterceptor extends HandlerInterceptorAdapter {
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		if(handler instanceof HandlerMethod){
			HandlerMethod hm = (HandlerMethod)handler;
			MDC.put("funcid", hm.getBeanType().getSimpleName());
		}
		return true;
	}
	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		// TODO Auto-generated method stub
		MDC.remove("funcid");
	}
}

 然后在WebMvcConfigurer把这个HandlerInterceptor注册上就好了

@Component
public class MvcConfigurer extends WebMvcConfigurerAdapter {
	@Override
	public void addInterceptors(InterceptorRegistry registry) {
		registry.addInterceptor(new LogConfigInterceptor()).addPathPatterns("/**").excludePathPatterns("/static/**");
	}
}

 

分享到:
评论

相关推荐

    通过短信发送LOG归类号码发送情况的shell脚本

    标题中的“通过短信发送LOG归类号码发送情况的shell脚本”指的是一个使用Shell脚本来监控和报告手机验证码或信息发送的状态。这个脚本的主要目的是分析日志文件(`sendsms.log`),从中提取出特定的信息,如发送成功...

    搭建springMVC+Mybatis+quartz+log4j+maven项目

    6. 编写业务逻辑类、DAO接口和Mapper XML文件,实现Mybatis的数据访问。 7. 编写控制器类,使用SpringMVC的注解处理HTTP请求。 8. 运行项目,检查日志、数据库连接、定时任务是否正常工作。 以上是一个基本的集成...

    SQL2000数据库[归类].pdf

    在实际应用中,根据业务需求,可能还需要考虑是否允许匿名订阅,以及如何处理署名订阅的问题。如果需要匿名订阅但发布不允许,可以在发布服务器的属性设置中添加订阅服务器,或者在企业管理器中进行相应调整。 总的...

    cclog.rar_The Given_log analysis

    4. **业务洞察**:对于用户行为日志,分析可以提供关于用户偏好、流量模式和转化率的见解,对产品改进和营销策略有指导意义。 5. **合规性审计**:在某些行业,如金融、医疗等,记录和分析日志是满足法规要求的重要...

    ORACLE备份与恢复(STUDENT)[归类].pdf

    Oracle数据库的备份与恢复是确保数据安全性和业务连续性的重要环节。本文主要讲解了Oracle数据库在面临各种故障情况时的应对策略,以及不同类型的备份和恢复方法。 首先,Oracle数据库可能遭遇的失败类型包括用户误...

    MySQL主从分离读写复制配置教程[归类].pdf

    - `log-bin`配置项指定了二进制日志文件的前缀名,这对于后续的数据复制至关重要。 **步骤2:创建复制用户** - 登录到主服务器的MySQL客户端,创建一个用于数据复制的用户`backup`: ```sql GRANT REPLICATION ...

    mysql相关配置及常用功能开启[归类].pdf

    在实践中,根据具体的硬件资源和业务需求,合理调整`my.cnf`的参数,如`back_log`(等待连接队列的大小)、`tmpdir`(临时文件存储位置)等,可以显著提高MySQL的性能和稳定性。 总之,理解并熟练运用这些MySQL的...

    linux服务器每秒并发处理数的计算方法[归类].pdf

    - Keepalive和Timeout设置:查看Web服务器配置文件获取相关参数。 **注意事项**:这种方法适用于最前端的服务器或7层交换机,因为后端服务器可能由于缓存或连接方式导致数据不准确。 **方法二:利用服务器日志...

    软件开发项目经验描述归类.pdf

    - AOP(面向切面编程):一种编程范式,允许把横切关注点与业务主体分离,以减少重复代码。 - SSO(单点登录):一种用户登录系统的方式,可以在多个应用系统中使用同一套登录凭证进行访问。 ***:微软开发的一个...

    .Net中常见问题及解决方法归类

    ### .Net中常见问题及解决方法归类 #### 一、概述 .NET框架自问世以来,在Web开发领域占据了举足轻重的地位。特别是在ASP.NET框架的推动下,它成为了构建高效、安全的企业级应用程序的理想选择之一。然而,在实际...

    IT项目运维资料-【运维部】YY进程管理规范.docx

    - **目录结构**:明确了打包后的文件夹结构,包括`bin`(存放可执行文件)、`lib`(存放库文件)、`conf`(存放配置文件)、`log`(存放日志文件)等。 - **注意事项**:要求不得在软件包顶层直接存放任何文件,并...

    java项目之业固定资产管理系统源码.zip

    这部分的实现可能基于业务规则和算法,例如,折旧计算可能需要根据资产类型和使用年限来确定。 总的来说,这个Java项目的企业固定资产管理系统通过Java语言强大的功能和灵活性,实现了对企业固定资产的全面管理,...

    Spring自动扫描

    同时还需要配置`log4j.properties`文件来定义日志行为,并创建`applicationContext.xml`作为Spring的配置文件。 ##### 2. 引入命名空间和Schema配置 为了让Spring能够识别并处理自动扫描相关的配置,需要在`...

    Python库 | tencentcloud-sdk-python-cls-3.0.578.tar.gz

    对于日志主题(Log Topic),CLS允许创建多个主题来归类不同的日志数据。开发者可以通过SDK创建主题,设置主题的生命周期、存储策略等。例如,可以使用`CreateTopic`接口创建一个新的日志主题。 消费组(Consumer ...

    C#.NET通用开发框架,权限管理组件软件

    3. **角色(Roles)**:角色是一种方便的分组方式,将具有相似权限的用户归类。通过分配角色,可以轻松地控制一大群用户的访问权限。C#中,`System.Web.Security`命名空间的`Roles`类用于管理角色。 4. **访问控制...

    基于SSM的简单人事管理系统+源代码+文档说明

    企业管理系统设计过程中,最重要的结构设计是对企业信息数据库的设计,包括了如何对员工信息进行归类,如何对职务信息进行处理以及部门之间的关系的解决,该项目采用了六张数据表分别对企业信息进行分类 1. 员工...

    开源中国源码

    FlyCms 是一个类似知乎以问答为基础的完全开源的JAVA语言开发的社交网络建站程序,基于 Spring Boot+Bootstrap3+MyBatis+MYSQL+Solr+Ehcache 应用架构,专注于社区内容的整理、归类和检索,它集合了问答,digg,wiki...

    other-workspace:用于其他杂项项目,这些项目在其他任何地方都不适合

    "other-workspace" 是一个专为存放不适合归类到其他特定目录或工作空间的杂项项目而设计的存储区域。这个命名通常用于开发者的工作环境中,尤其是对于那些从事多项目管理和跨语言开发的人员来说,这样的组织方式可以...

    全国自考软件开发工具试题及答案.docx

    根据提供的文件信息,本文将对其中的关键知识点进行详细的解析与说明。主要涉及软件开发工具的选择、使用、以及相关的技术和管理方面的问题。 ### 单选题部分解析 #### 1. 支持面向对象的语言及其开发工具 - **...

    2010年3月全国计算机等级考试二级VB笔试试卷(含参考答)

    虽然对分查找的时间复杂度为\(O(\log_2 n)\),但在链表中无法实现对分查找。 - **D)** 错误。此选项同样与链表查找不相符。 **2. 算法的时间复杂度** - **选项解析**: - **A)** 错误。算法的执行时间受多种因素...

Global site tag (gtag.js) - Google Analytics