博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
日志框架 - 基于spring-boot - 实现2 - 消息定义及消息日志打印
阅读量:6231 次
发布时间:2019-06-22

本文共 1940 字,大约阅读时间需要 6 分钟。

日志框架系列讲解文章

上一篇我们讲了日志框架实现的第一部分:配置文件

本篇讲日志框架实现的第二部分:消息定义及消息日志打印

消息定义

对于设计中提及的核心概念消息,代码中定义如下。

/** * 消息 */public class Message {        private Object content;        private MessageType type;        public Object getContent() {        return content;    }        public void setContent(Object content) {        this.content = content;    }        public MessageType getType() {        return type;    }        public void setType(MessageType type) {        this.type = type;    }}/** * 消息类型 */public enum MessageType {    XML, JSON, KEY_VALUE, TEXT, NONE}

消息日志的打印

在中讲到:提供一个@MessageToLog注解,在函数上使用,将函数的返回值视作消息(Message),打印到消息日志中。

消息日志的打印功能,主要由@MessageToLog注解结合SpringAOP方式实现。@MessageToLog注解定义如下。

/** * 在方法使用本注解,返回值会被视为报文记录到报文日志中。 */@Target({ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface MessageToLog {    String value() default "";    String addition() default "";}

然后定义切面与相应的操作,对使用了@MessageToLog的函数的返加回值进行额外操作,写入报文日志。代码如下。

/** * 针对MessageToLog注解的切面 */@Aspectpublic class MessageToLogAspect {        private static Logger logger =            LoggerFactory.getLogger(MessageToLogAspect.class);        private ObjectMapper mapper = new ObjectMapper();        @AfterReturning(            value = "@annotation(annotation)",            returning = "message")    public void doMessageToLog(MessageToLog annotation, Object message) {        String messageText;        if (message instanceof String) {            messageText = ((String) message).replaceAll("\n|\r|\t", "");        } else if (message instanceof Document) {            messageText = ((Document) message).asXML();        } else {            try {                messageText = mapper.writeValueAsString(message);            } catch (JsonProcessingException e) {                messageText = "";            }        }                String additionStr = annotation.addition();        logger.info("{} {}", additionStr, messageText);    }}

至此,消息日志打印功能已经实现。

转载地址:http://mshna.baihongyu.com/

你可能感兴趣的文章
所以,奇形态(甚至)线条颜色
查看>>
FLEX程序设计-XML(2)
查看>>
ISSET_SE 错误异常
查看>>
VS2010使用c++、gSOAP创建WebService 图文教程
查看>>
WF4.0 Beta2:Pick Activity的使用
查看>>
.Net魔法堂:史上最全的ActiveX开发教程——开发篇
查看>>
Jenkins搭建.NET自动编译测试与发布环境
查看>>
[PAL编程规范]SAP HANA PAL KNN 近邻预测分析K- Nearest Neighbor编程规范KNN
查看>>
JAVA设计模式--工厂方法模式
查看>>
C# WinForm开发系列 - CheckBox/Button/Label/ProgressBar
查看>>
初步学习pg_control文件之二
查看>>
38.2. Services
查看>>
淘宝账号基于OAuth2.0的登录验证授权登陆第三方网站
查看>>
WF中的跟踪服务(6):如何自定义跟踪服务
查看>>
我喜欢的工具列表
查看>>
AOV网络拓扑排序
查看>>
getActionBar()空指针异常
查看>>
JavaScript 对象字面量
查看>>
C#中一道关于线程同步的练习题——模拟多窗口售票
查看>>
XAMPP 的安装配置(Linux 版)
查看>>