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. lightgbm调参方法

    gridsearchcv: https://www.cnblogs.com/bjwu/p/9307344.html gridsearchcv+lightgbm cv函数调参: https://www. ...

  2. 常见的错误:FTP连接时出现“227 Entering Passive Mode”

    FTP的主动模式(PORT Mode)及被动模式(Passive Mode) FTP的特殊性: 大多数的TCP服务是使用单个的连接,一般是客户向服务器的一个周知端口发起连接,然后使用这个连接进行通讯. ...

  3. Mac无法将自定义图标添加到Launchpad的替代方案(桌面双击Shell运行)

    截止在几天之前的Mac OS版本都无法实现将自定义图标添加到Launchpad.我使用的是10.12. 替代的思路就是在桌面新建一个Shell文件,然后使软件在后台运行,最后就是双击Shell文件能自 ...

  4. sql geography类型(地理坐标) 赋值

    sql 语句赋值 update [lishui].[dbo].[t_NearbyService] ,, ) ,[locationbaidu]=geography::Point(,, ) where [ ...

  5. [作业] Python入门基础--用户登陆

    让用户输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定登陆 #__author:Mifen #date: 2018/11/28 import time #自定义本地用户名和密码 user_nam ...

  6. 关于svn插件突然失效问题

    这个分享一下 安装  MyBatisGenerator 插件 之后,svn失效,删掉mybatis 后,svn就恢复正常...这怎么割 一翻折腾无效,后来发现  MyBatisGenerator  和 ...

  7. Canvas 绘制矩形,圆形,不规则图形(线条),渐变等图像效果

    绘制矩形: getContext("2d") 对象是内建的 HTML5 对象,拥有多种绘制路径.矩形.圆形.字符以及添加图像的方法. fillStyle 方法将其染成红色,fill ...

  8. spring cloud连载第二篇之Spring Cloud Config

    Spring Cloud Config Spring Cloud Config为分布式服务提供了服务侧和客户侧的外部配置支持.通过Spring Cloud Config你可以有一个统一的地方来管理所有 ...

  9. Thread中断线程的方法

    转载:https://www.cnblogs.com/l2rf/p/5566895.html 线程对象属于一次性消耗品,一般线程执行完run方法之后,线程就正常结束了,线程结束之后就报废了,不能再次s ...

  10. Golang之并发资源竞争(读写锁)

    前面的有篇文章在讲资源竞争的时候,提到了互斥锁.互斥锁的根本就是当一个goroutine访问的时候,其他goroutine都不能访问,这样肯定保证了资源的同步,避免了竞争,不过也降低了性能. 仔细剖析 ...