一:日志接口

TrinityCore的日志有六个级别:Trace,Debug,Info,Warn,Error,Fatal

它们分别对应以下这六个接口,(filterType__也是在配置文件中指定的)

#define TC_LOG_TRACE(filterType__, ...)
#define TC_LOG_DEBUG(filterType__, ...)
#define TC_LOG_INFO(filterType__, ...)
#define TC_LOG_WARN(filterType__, ...)
#define TC_LOG_ERROR(filterType__, ...)
#define TC_LOG_FATAL(filterType__, ...)

二:日志类型与Appender

说明:这个在配置文件的注释中说得很详细,直接帖两段吧

Appender配置:

#  Appender config values: Given a appender "name"
#    Appender.name
#        Description: Defines 'where to log'
#        Format:      Type,LogLevel,Flags,optional1,optional2,optional3
#
#                     Type
#                         0 - (None)
#                         1 - (Console)
#                         2 - (File)
#                         3 - (DB)
#
#                     LogLevel
#                         0 - (Disabled)
#                         1 - (Trace)
#                         2 - (Debug)
#                         3 - (Info)
#                         4 - (Warn)
#                         5 - (Error)
#                         6 - (Fatal)
#
#                     Flags:
#                         0 - None
#                         1 - Prefix Timestamp to the text
#                         2 - Prefix Log Level to the text
#                         4 - Prefix Log Filter type to the text
#                         8 - Append timestamp to the log file name. Format: YYYY-MM-DD_HH-MM-SS (Only used with Type = 2)
#                        16 - Make a backup of existing file before overwrite (Only used with Mode = w)
#
#                     Colors (read as optional1 if Type = Console)
#                         Format: "fatal error warn info debug trace"
#                         0 - BLACK
#                         1 - RED
#                         2 - GREEN
#                         3 - BROWN
#                         4 - BLUE
#                         5 - MAGENTA
#                         6 - CYAN
#                         7 - GREY
#                         8 - YELLOW
#                         9 - LRED
#                        10 - LGREEN
#                        11 - LBLUE
#                        12 - LMAGENTA
#                        13 - LCYAN
#                        14 - WHITE
#
#                     File: Name of the file (read as optional1 if Type = File)
#                         Allows to use one "%s" to create dynamic files
#
#                     Mode: Mode to open the file (read as optional2 if Type = File)
#                          a - (Append)
#                          w - (Overwrite)
#
#                     MaxFileSize: Maximum file size of the log file before creating a new log file

日志配置:

#  Appender config values: Given a appender "name"
#    Appender.name
#        Description: Defines 'where to log'
#        Format:      Type,LogLevel,Flags,optional1,optional2,optional3
#
#                     Type
#                         0 - (None)
#                         1 - (Console)
#                         2 - (File)
#                         3 - (DB)
#
#                     LogLevel
#                         0 - (Disabled)
#                         1 - (Trace)
#                         2 - (Debug)
#                         3 - (Info)
#                         4 - (Warn)
#                         5 - (Error)
#                         6 - (Fatal)
#
#                     Flags:
#                         0 - None
#                         1 - Prefix Timestamp to the text
#                         2 - Prefix Log Level to the text
#                         4 - Prefix Log Filter type to the text
#                         8 - Append timestamp to the log file name. Format: YYYY-MM-DD_HH-MM-SS (Only used with Type = 2)
#                        16 - Make a backup of existing file before overwrite (Only used with Mode = w)
#
#                     Colors (read as optional1 if Type = Console)
#                         Format: "fatal error warn info debug trace"
#                         0 - BLACK
#                         1 - RED
#                         2 - GREEN
#                         3 - BROWN
#                         4 - BLUE
#                         5 - MAGENTA
#                         6 - CYAN
#                         7 - GREY
#                         8 - YELLOW
#                         9 - LRED
#                        10 - LGREEN
#                        11 - LBLUE
#                        12 - LMAGENTA
#                        13 - LCYAN
#                        14 - WHITE
#
#                     File: Name of the file (read as optional1 if Type = File)
#                         Allows to use one "%s" to create dynamic files
#
#                     Mode: Mode to open the file (read as optional2 if Type = File)
#                          a - (Append)
#                          w - (Overwrite)
#
#                     MaxFileSize: Maximum file size of the log file before creating a new log file

三:配置例子:

Appender.Console=1,3,0
Appender.Server=2,2,0,Server.log,w
Logger.root=2,Console Server

以上这三句,定义了两个Appender:Console, Server,一个log type:root

Appender.Console说明将日志输出到终端上,最低输出级别是Info,输出字体颜色是黑色(因终端的不同而不同)

Appender.Server说明将日志输出到文件,最低输出级别是Debug,输出文件是(Server.log),以重写(非添加)的方式写入

Logger.root最低输出级别是Info,使用Console和Server的配置

四,底层实现

这里简单地说一下,就不太深入了

以 TC_LOG_INFO("qch", "Hello, world"); 为例子

这句实现上是调用了

if(Log::instance()::ShouldLog("qch", LOG_LEVEL_INFO) )Log::instance()::outMessage ("qch", LOG_LEVEL_INFO, "Hello,world");

ShouldLog比较好理解,直接将配置文件中的最低日志输出级别和LOG_LEVEL_INFO一比较就搞定。

outMessage就比较麻烦了,层层调用,有兴趣的可以去看看,这里就不多作解释了。

如果把Appender的Type设为3(DB),那每写一条日志,就是在auth库的logs表中插入一条记录:

INSERT INTO logs (time, realm, type, level, string) VALUES (1409544332, 0, 'qch', 3,'Hello, world\n')

魔兽世界服务器Trinitycore分析三:日志模块相关推荐

  1. 魔兽世界服务器Trinitycore分析一:前言

    一:简介 项目地址:https://github.com/TrinityCore/TrinityCore 帖一段官网介绍吧 TrinityCore is a MMORPG Framework base ...

  2. Linux服务器 | 服务器模型与三个模块、两种并发模式:半同步/半异步、领导者/追随者

    文章目录 两种服务器模型及三个模块 C/S模型 P2P模型 I/O处理单元.逻辑单元.存储单元 并发 同步与异步 半同步/半异步模式 变体:半同步/半反应堆模式 改进:高效的半同步/半异步模式 领导者 ...

  3. fix8源码分析之日志模块

    本分析基于fix8 1.3.4版本源代码: fix8中全局日志的使用方式如下: GlobalLogger::set_global_filename(log); //设置日志输出文件     FIX8: ...

  4. python logging模块的作用_Python 日志模块logging分析及使用-2

    本文作为Python日志模块的补充,主要介绍日志回滚RotatingFileHandler和TimedRotatingFileHandler的使用,以及其所带来的问题.Logger对象的日志等级是如何 ...

  5. 魔兽世界 服务器维护,魔兽世界8.0:服务器崩溃紧急维护三小时 网易这次得背大锅!...

    原标题:魔兽世界8.0:服务器崩溃紧急维护三小时 网易这次得背大锅! 魔兽世界8.0版本在8月14日凌晨6点30分准时开启,不知道有多少玩家彻夜难眠,定了不知道多少闹钟,甚至不惜请假.辞职只为了在第一 ...

  6. Mybatis源码日志模块分析

    看源码需要先下载源码,可以去Mybatis的github上的仓库进行下载,Mybatis 这次就先整理一下日志这一块的源码分析,这块相对来说比较简单而且这个模块是Mybatis的基础模块. 之前的文章 ...

  7. Windows服务器流量异常排查分析(Nginx日志分析):Web Log Expert 和 GlassWire 的使用

    最近某台阿里云服务器流量带宽突然超负荷运转,想了想,难道被攻击了?不应该会用户突然暴增啊!?于是开始排查流量来源. 首先,用 GlassWire 监听服务器的那个应用占用了大量的流量.GlassWir ...

  8. 从零开始实现C++ TinyWebServer(三)---- 补偏救弊调试分析,日志系统来帮忙

    文章目录 前言 1. 知识点 1.1 单例模式 1.2 异步日志 2. 日志的运行流程 3. blockqueue 4. 日志的分级与分文件 5. 实现代码 blockqueue.h log.h lo ...

  9. 微软企业库4.1学习笔记(三十六)日志模块 简介

    日志模块 企业库的日志模块简单的实现了日志功能的常用功能.开发者可以利用模块在下面的位置记录信息: 事件日志 电子邮件 数据库 消息队列 文本文件 WMI的事件查看器 自定义的位置 模块为记录在任何位 ...

最新文章

  1. 半斤八两中级破解 (四) TCP_UDP协议转向本地验证
  2. java 对象图_Java对象内存图
  3. 京东小程序上线,剑指何方?
  4. 搜索引擎学习(二)Lucene创建索引
  5. 元祖数据mysql_MySQL数据库——表操作
  6. Vista下将Area效果应用到整个窗体
  7. 编译FREETYPE:VS2010错误MSB8008
  8. shiro放行_Shiro框架详解
  9. Tomcat热部署三种方式的详细说明
  10. 视频下载转换器:MovieSherlock for Mac
  11. 虚拟服务器忘记密码,Win7系统下VMware虚拟机忘记开机密码如何解决
  12. 计算机考数学一英语二的学校,【专硕】初试考数学一的学校统计
  13. ubuntu安装软件包命令
  14. Word文档 回车符去除
  15. NB-IoT是什么?
  16. python编写coc部落冲突游戏辅助(1)
  17. SEASKY开源机械键盘 AD PCB 教程
  18. 机器学习常用算法原理及优缺点
  19. (纪中)1593. 【GDKOI训练】电视游戏问题(vidgame)【DP】
  20. 【数字图像处理】编码解码jpeg和png图片(C语言实现)

热门文章

  1. 想要删除视频中不需要的片头片尾怎么操作
  2. 为什么挂脖式不适合运动呢?五款舒适好用的入耳式蓝牙耳机不妨试试
  3. 半入耳式蓝牙耳机推荐,盘点2022高品质半入耳蓝牙耳机
  4. CDR中调和工具的使用方法
  5. 7天搞定FPGA精录总结Episode.6 串口通信,系统设计【基于Robei、Altera QuartusⅡ与Python】
  6. 三年磨一剑,高德地图体验优化总结
  7. 炒了8年的概念,到底该如何理解DevOps这个词
  8. wps怎样c语言程序流程图,wps怎么制作流程图【使用方法】
  9. 2022-03-26 原生js实现一个点击弹出的可拖拽登录框(待编辑)
  10. Centos7 添加删除用户和用户操作命令