我这篇分享是很基础的东西 我希望爱技术的你不要错过exceptionless和ELK,当然你也可以用nosql+搜索技术比如es。
日志系统对于任何项目都是必不可少的,无论对于测试阶段的debug,性能测试,执行时间,操作记录还是线上的问题排查,访问记录等,日志系统都扮演着重要的角色。本篇分享的目的是能帮助需要的人快速搭建自己的LogSystem.,仅供参考。 先上个图呗,自认为页面还算清爽吧:
我的LogSystem使用Log4net入库的方式,网上特别多的分享,但是能完整运行下来的真是很少,所以现在需要和以后用得上的小伙伴抓紧收藏咯。
二. Log4Net自定义内容入库
Log4Net存日志的方式,给人的感觉实在是不实用,IT行业不都求一个自动化吗?废话不说了,先上Log4net入库系统的代码。
LogSystem数据库结构,我的建议是一个项目一个表。
在Log组件中,你需要这样几个类。下面分别给出代码:
LogContent.cs,这里定义了Log实体,在实体化实体的时候,通过给构造函数传参创建好这个对象。注释很详细了
1 using System; LogComponent 4 { LogContent 6 { LogContent(string logLevel, string logMsg, string logModule, string description, string userName) 9 { 10 LogLevel = logLevel; 11 UserName = userName; 12 Description = description; 13 LogMsg = logMsg; 14 LogModule = logModule; 15 } 日志级别 LogLevel { get; set; } 日志消息 LogMsg { get; set; } 系统登陆用户 UserName { get; set; } 日志描述信息 Description { get; set; } 记录时间 DateTime LogDate { get; set; } 模块名称 LogModule { get; set; } 46 } 47 }
View CodeLogHelper.cs,定义了日志级别,和写入方法
)] 2 namespace LogComponent 3 { LogHelper 5 { ); 异常日志 LogError(string logMsg, string logModule, string description = "", string userName = "") 16 { , SubLogString(logMsg), logModule, SubLogString(description), userName)); 18 } LogInfo(string logMsg, string logModule, string description = "", string userName = "") 21 { , SubLogString(logMsg), logModule, SubLogString(description), userName)); 23 } LogWarn(string logMsg, string logModule, string description = "", string userName = "") 26 { , SubLogString(logMsg), logModule, SubLogString(description), userName)); 28 } LogDebug(string logMsg, string logModule, string description = "", string userName = "") 31 { , SubLogString(logMsg), logModule, SubLogString(description), userName)); 33 } SubLogString(string str) 36 { 37 if (str.Length > 1500) 38 { 39 return str.Substring(0, 1500); 40 } 41 return str; 42 } 43 } 44 }
View CodeMessagePartternConverter.cs