当前位置: 首页 > wzjs >正文

网站建设安全与威胁邯郸网站设计怎么开发

网站建设安全与威胁,邯郸网站设计怎么开发,制作企业网站作业,网络域名1.前言 log4j是Java中一个强大的日志记录框架,通过简单的配置便可以在程序中进行日志打印与记录。关于log4j博主最近碰到一个需求,需要将程序运行过程中的日志按给定的json模板输出,本文记录一下log4j如何配置json格式的日志打印。 2.日志配…

1.前言

log4j是Java中一个强大的日志记录框架,通过简单的配置便可以在程序中进行日志打印与记录。关于log4j博主最近碰到一个需求,需要将程序运行过程中的日志按给定的json模板输出,本文记录一下log4j如何配置json格式的日志打印。

2.日志配置

2.1依赖配置

本文使用的是log4j 2.x版本,log4j的核心为log4j API( 接口)和log4j Core(实现),它可以通过桥接器log4j-slf4j-impl兼容其他的日志框架如SLF4J等。另外,由于需要支持json日志输出,需要引入log4j-layout-template-json

根据以上说明,下面给出具体maven的依赖:

  <dependencies><dependency><!-- SLF4J API --><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.22</version></dependency><!-- Log4j 2 API --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>2.17.2</version></dependency><!-- Log4j 2 Core --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.17.2</version></dependency><!-- SLF4J to Log4j 2 Bridge --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j-impl</artifactId><version>2.17.2</version></dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-layout-template-json</artifactId><version>2.17.2</version></dependency></dependencies>

2.2日志行为设置

通过log4j2.xml来配置日志打印的行为,为了使用json格式来输出和保存日志,使用了JsonTemplateLayout,该布局可以通过eventTemplate[Uri]stackTraceElementTemplate[Uri]来自定义json的结构。

<!--log4j2.xml配置内容-->
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn"><Properties><property name="LOG_HOME">log</property><property name="MAX_SIZE">100MB</property></Properties><Appenders><!--控制台输出--><Console name="Console" target="SYSTEM_OUT"><!-- 使用 JsonTemplateLayout 输出日志 --><JsonTemplateLayout eventTemplateUri="classpath:template.json"/></Console><!--文件输出--><RollingFile name="File" fileName="log/res.log" filePattern="log/res-%d{yyyy-MM-dd}-%i.log"><!-- 使用 JsonTemplateLayout 输出日志 --><JsonTemplateLayout eventTemplateUri="classpath:template.json"/><!-- 定义滚动策略 --><Policies><!--日志文件超过了设定的大小, 会触发日志文件的滚动, 根据filePattern创建新的日志文件--><!--旧的日志文件会附加编号,例如res-1.log, res-2.log--><SizeBasedTriggeringPolicy size="${MAX_SIZE}"/></Policies><!--限制只保留最近的5个日志文件--><DefaultRolloverStrategy max="5" fileIndex="min"/></RollingFile></Appenders><Loggers><Root level="debug"><AppenderRef ref="Console"/><AppenderRef ref="File"/></Root></Loggers>
</Configuration>

JSON模板

log4j官方给出了自定义的模板JsonLayout.json,参考该配置,本文简单定义了如下的template.json模板:

{"Thread": {"$resolver": "thread","field": "name"},"ErrorCode": "${ctx:ErrorCode}","Timestamp": "${date:yyyy-MM-dd HH:mm:ss}","Message": {"$resolver": "message","stringified": true},"Thrown": {"message": {"$resolver": "exception","field": "message"},"name": {"$resolver": "exception","field": "className"},"extendedStackTrace": {"$resolver": "exception","field": "stackTrace"}}
}

说明:

  • 模板中的{ "$resolver": "message", "stringified": true }由由 JSON 模板布局编译器解释,并替换为引用的事件或堆栈跟踪模板解析器。
  • 通过ThreadContext可以往json模板动态传值,例如模板中的${ctx:ErrorCode}

3.日志测试

根据上面的配置,定义一个测试类进行日志打印测试:

package com.example.log;import org.apache.logging.log4j.ThreadContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class TraceLogTest {static Logger log =  LoggerFactory.getLogger(TraceLogTest.class);public static void main(String[] args) {// 设置上下文变量ThreadContext.put("ErrorCode", "1024");// 记录日志try{int i = 1 / 0;}catch (Exception e){log.error("Log test", e);}// 清除上下文变量ThreadContext.clearAll();}
}

运行上述代码的记录的日志(格式化后)如下:

{"Thread": "main","ErrorCode": "1024","Timestamp": "2025-02-10 14:35:27","Message": "Log test","Thrown": {"message": "/ by zero","name": "java.lang.ArithmeticException","extendedStackTrace": [{"class": "com.example.log.TraceLogTest","method": "main","file": "TraceLogTest.java","line": 15}]}
}

文章转载自:

http://LelEtPjc.sqskm.cn
http://sXY4rlXI.sqskm.cn
http://JORgAqkN.sqskm.cn
http://fnfmUWEk.sqskm.cn
http://wendUJ4C.sqskm.cn
http://ExCIyc9x.sqskm.cn
http://0n2AMchV.sqskm.cn
http://zDow8icT.sqskm.cn
http://gHVDzm3l.sqskm.cn
http://xBrdM14R.sqskm.cn
http://73nNi0iN.sqskm.cn
http://YE0roBtp.sqskm.cn
http://ECYtMNr6.sqskm.cn
http://1z7ED5r6.sqskm.cn
http://kKNGs7dL.sqskm.cn
http://4yZQjYSI.sqskm.cn
http://XqiKZBV4.sqskm.cn
http://nZkJ20DM.sqskm.cn
http://5BxBCJL2.sqskm.cn
http://M9kxlzTh.sqskm.cn
http://yfOqtMhe.sqskm.cn
http://o8DZpKkF.sqskm.cn
http://9y9L3tD9.sqskm.cn
http://0iqSBGao.sqskm.cn
http://ESXGQT04.sqskm.cn
http://nB0SJUX3.sqskm.cn
http://bLy1ifHg.sqskm.cn
http://MMzwAVOu.sqskm.cn
http://2YHZ1ENI.sqskm.cn
http://RAhitYjG.sqskm.cn
http://www.dtcms.com/wzjs/739752.html

相关文章:

  • 镇江建设局网站要实现对网站中的所有内容进行搜索代码应该怎么写
  • 免费的软件网站建立一个网站需要人员
  • 西安国内做网站的公司有哪些google首页
  • 桂林小学网站建设域名注册个人和企业有什么区别
  • 静态网站公用头部 调用标题手机网站大全
  • 政法队伍建设网站主要内容死链对网站链轮的影响
  • 专业做财经直播网站有哪些界面设计心得
  • 可以做简单小活动的网站做网站笔记本2014
  • asp.net网站后台源码wordpress音乐外链
  • fqapps com网站怎么做吉林市网站建设优化
  • 高流量网站开发框架经验自媒体怎么申请注册
  • 在中国做网站网站违法吗centos 7 安装wordpress
  • 网站的作用网站优化年报告
  • wordpress采集建站网站建设全包
  • 资讯门户类网站模板创意网名昵称大全
  • 品牌微营销网站建设wordpress get_the_author_meta
  • 高校门户网站系统企业网站建设组织人员可行性分析
  • 丝绸之路网站建设怎样做网站标题优化
  • 长春网站开发培训价格设计wordpress主题
  • 免费h5页面制作平台有哪些温州做网站优化
  • 做网站赚多少海南专业网站建设
  • 安徽省建设厅网站职称申报都有哪些可以做app的网站
  • 徐州市徐州市城乡建设局网站免费在线咨询软件
  • 怎么什么软件可以吧做网站wordpress模板放
  • 打开网站自动跳转代码wordpress最好的页面编辑器
  • 做平面设计买哪个素材网站会员免费站推广网站2022
  • 园林景观效果图网站电商培训大概多少学费
  • 洛阳网站备案商洛免费做网站公司
  • 做旅游项目用哪家网站好访问网站 过程
  • 黑龙江网站备案查询高端网站设计一般多少钱