1.日志规范

各业务系统日志需要统一,以方便查看、收集日志, 日后统一ELK日志管理,以下为项目的日志配置,

这是兼容当前系统的日志,以后推行微服架构时会有变动,但日志存放方式不会改变,日后会推行spring boot log4j2.yml

主要分为三块 : 控制台日志 consoleAppend (本地调试可以打开,发布环境不能打开)

业务日志   infoAppend  按日切分  ${catalina.home}/logs/ucenter/info.log  (ucenter 为具体业务模块的名称 如站点 site)

错误日志  errorAppend 按日切分  ${catalina.home}/logs/ucenter/error.log

 各业务模块接入:只要把下面  log4j.xml (链接)文件放到web 模块 根目录下即可。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!--
* 1. 一个appender子元素定义一个日志输出目的地
* 2. 一个logger子元素定义一个日志写出器
-->
<!-- catalina.out -->
<appender name="consoleAppend" class="org.apache.log4j.ConsoleAppender" >
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss} [%5p][%t][%c{1}]-[%M] %m%n" />
</layout>
</appender> <!-- error log -->
<appender name="errorAppend" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="${catalina.home}/logs/ucenter/error.log" />
<param name="Append" value="true" />
<!--<param name="DatePattern" value="yyyy-MM-dd-HH-mm'.html'"/>-->
<param name="DatePattern" value="yyyy-MM-dd'.log'"/>
<param name="MaxBackupIndex" value="10" />
<param name="MaxFileSize" value="4000000" />
<param name="encoding" value="utf-8"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t][%c] %p - %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="ERROR" />
<param name="LevelMax" value="ERROR" />
</filter>
</appender> <!-- INFO --> <!--org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)-->
<!--<appender name="infoAppend" class="org.apache.log4j.RollingFileAppender">-->
<appender name="infoAppend" class="cn.gamemall.ucenter.core.aop.logger.core.DailyRollingFileInfoAppender">
<param name="File" value="${catalina.home}/logs/ucenter/info.log" />
<param name="Append" value="true" />
<param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
<!--<param name="MaxBackupIndex" value="10" />-->
<!--<param name="MaxFileSize" value="4096" />-->
<param name="threshold" value="INFO"/>
<param name="encoding" value="utf-8"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t][%c] %p - %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="WARN" />
</filter>
</appender> <appender name="IBatisAppend" class="org.apache.log4j.DailyRollingFileAppender">
<param name="Append" value="true" />
<param name="File" value="${catalina.home}/logs/ucenter/info.log" />
<param name="DatePattern" value="'.'yyyy-MM-dd" />
<param name="encoding" value="UTF-8" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t][%c] %p - %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="ERROR" />
<param name="LevelMax" value="FATAL" />
</filter>
</appender> <!--
logger的作用:
1.[name属性]:指定你定义Logger对象时候的name
2. additivity : children-logger是否使用 rootLogger的配置,
additivity在log4j默认为true。这解释了为什么有些时候,一个日志信息在屏幕上会有多次输出。
3.还可以指定level(输出级别)、appender-ref(指定哪个append)
-->
<!-- loggers -->
<logger name="com.ibatis" additivity="true">
<level value="ERROR"/>
<appender-ref ref="IBatisAppend" />
</logger>
<logger name="java.sql.Connection" additivity="true">
<level value="ERROR"/>
<appender-ref ref="IBatisAppend" />
</logger> <logger name="java.sql.Statement" additivity="true">
<level value="ERROR"/>
<appender-ref ref="IBatisAppend" />
</logger> <logger name="java.sql.PreparedStatement" additivity="true">
<level value="DEBUG"/>
<appender-ref ref="IBatisAppend" />
</logger> <logger name="java.sql.ResultSet" additivity="true">
<level value="ERROR"/>
<appender-ref ref="IBatisAppend" />
</logger> <logger name="cn.xxx.info" additivity="true">
<!-- 如果1个包想对应多个 Appender 就这样,对于每个Appender自定义的日志级别可以在Appender上加上filter -->
<level value="INFO"/>
<appender-ref ref="infoAppend" />
</logger>
<logger name="cn.xxx.error" additivity="true">
<!-- 如果1个包想对应多个 Appender 就这样,对于每个Appender自定义的日志级别可以在Appender上加上filter -->
<level value="ERROR"/>
<appender-ref ref="infoAppend" />
</logger> <!--
root的作用(相当于全局的意思):
1.[priority ]:指定默认的全局输出级别
2.[appender-ref ]:指定一些默认的append(没有指出特殊包或者类,即那些没有指定<logger>元素的append)的输出;
-->
<root>
<priority value="INFO" />
<!--<appender-ref ref="consoleAppend" />-->
<appender-ref ref="IBatisAppend" />
<appender-ref ref="errorAppend" />
<appender-ref ref="infoAppend" />
</root> </log4j:configuration>

JAVA后台框架优化之日志篇的更多相关文章

  1. JAVA后台框架优化之微服spring boot

    1.为什么要微服? 首先我们目前后台系统业务链目前还是相对不是那么复杂,但随着项目的拆分,业务的快速推进,各项目模块的接口也随之增加,开发的复杂度不断增加,为以后扩展埋下隐患,而规划新的框架目前主要解 ...

  2. Java 集合框架综述,这篇让你吃透!

    一.集合框架图 简化图: 说明:对于以上的框架图有如下几点说明 1.所有集合类都位于java.util包下.Java的集合类主要由两个接口派生而出:Collection和Map,Collection和 ...

  3. Java 后台性能优化简要

    业务系统性能优化的前提时观察和诊断.观察工具例如以下:前端优化工具:YSlow页面响应时间:Firebug方法对应时间:btraceGC日志分析:JVM 启动參数数据库优化:慢查询系统资源调用:监控 ...

  4. 【最新】最流行的java后台框架 springmvc mybaits 集代码生成器 SSM SSH

        获取[下载地址]   QQ: 313596790   [免费支持更新] A 代码生成器(开发利器);全部是源码     增删改查的处理类,service层,mybatis的xml,SQL( m ...

  5. Java学习笔记——浅谈数据结构与Java集合框架(第三篇、Map)

    桃李春风一杯酒,江湖夜雨十年灯 --寄黄几复 之前图上写错了,是Hashtable类.t是小写的,它是个很古老的类,以至于命名都没有那么规范.. HashMap HashMap就是存储key-valu ...

  6. java后台框架面试必须会的东西

  7. 浅入深出之Java集合框架(下)

    Java中的集合框架(下) 由于Java中的集合框架的内容比较多,在这里分为三个部分介绍Java的集合框架,内容是从浅到深,哈哈这篇其实也还是基础,惊不惊喜意不意外 ̄▽ ̄ 写文真的好累,懒得写了.. ...

  8. IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题

    IT咨询顾问:一次吐血的项目救火   年后的一个合作公司上线了一个子业务系统,对接公司内部的单点系统.我收到该公司的技术咨询:项目启动后没有规律的突然无法登录了,重新启动后,登录一断时间后又无法重新登 ...

  9. 《手把手教你》系列基础篇(八十四)-java+ selenium自动化测试-框架设计基础-TestNG日志-上篇(详解教程)

    1.简介 TestNG还为我们提供了测试的记录功能-日志.例如,在运行测试用例期间,用户希望在控制台中记录一些信息.信息可以是任何细节取决于目的.牢记我们正在使用Selenium进行测试,我们需要有助 ...

随机推荐

  1. 求幂大法,矩阵快速幂,快速幂模板题--hdu4549

    hdu-4549 求幂大法.矩阵快速幂.快速幂 题目 M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 ...

  2. C#枚举类型转换

    string 转 enum (自己定义的枚举类型)(Enum.Parse(typeof(自己定义的枚举类型), 待转字符串)); enum 转 string enum.Getname(typeof(自 ...

  3. Android Studio: /dev/kvm device permission denied

    https://stackoverflow.com/questions/37300811/android-studio-dev-kvm-device-permission-denied To chec ...

  4. SOA与微服务

    SOA 面向服务架构,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署.组合和使用.服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性. SOA是一种 ...

  5. ../../build/debug/codegen/libCodeGen.a(llvm-codegen.cc.o ):( data.rel.ro_ZTIN4llvm18ValueMapCallbackVHIPKNS_5ValueENS_6WeakVHENS_14ValueMapConfigIS3_EEEE[_ZTIN4llvm18ValueMapCallbackVHIPKNS_5ValueENS_

    解决方式如下: wget http://llvm.org/releases/3.3/llvm-3.3.src.tar.gz    tar xvzf llvm-3.2.src.tar.gz    cd ...

  6. redis数据类型(五)set类型

    一. set类型 set是无序集合,最大可以包含(2 的 32 次方-1)个元素. set 的是通过 hash table 实现的,所以添加,删除,查找的复杂度都是 O(1). hash table ...

  7. 如何处理服务器SSL收到了一个弱临时Diffie-Hellman 密钥?

    当我们用火狐浏览器打开某个HTTPS网站时可能会失败,并且出现如下错误提示:         安全连接失败连接某个URL网址时发生错误. 在服务器密钥交换握手信息中 SSL 收到了一个弱临时 Diff ...

  8. js弹出遮层

    <script> var docEle = function () { return document.getElementById(arguments[0]) || false; } f ...

  9. 撩课-Web大前端每天5道面试题-Day15

    1.请描述一下 cookies,sessionStorage 和 localStorage 的区别? cookie是网站为了标示用户身份而储存在用户本地终端(Client Side)上的数据(通常经过 ...

  10. 在js里面比较大小必须先转换成number

    利用js里面的Number函数从对象转换成数值