自定义日志模型

本文示例源码: https://github.com/liangshiw/LogDashboard/tree/develop/samples/DatabaseSource

日志模型

LogDashboard提供了基础的日志模型,包含以下5个属性,代表着只有包含以下5个属性的日志才可以被LogDashboard解析

  • LongDate

  • Logger

  • Level

  • Message

  • Exception

除了以上5个预定义属性外,我们还可以自定义属性

创建NetCore项目

参考快速入门中的创建NetCore项目步骤

使用以下 Nlog.config

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
autoReload="true"
throwExceptions="false"
internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">
<!-- optional, add some variables
https://github.com/nlog/NLog/wiki/Configuration-file#variables
-->
<variable name="myvar" value="myvalue"/>
<!--
See https://github.com/nlog/nlog/wiki/Configuration-file
for information on customizing logging rules and outputs.
-->
<targets>
<target xsi:type="file" name="File" fileName="${basedir}/logs/${shortdate}.log"
layout="${longdate}||${level}||${logger}||${message}||${exception:format=ToString:innerFormat=ToString:maxInnerExceptionLevel=10:separator=\r\n}||${var:application}||${var:requestMethod}||${machinename}||end" />
<!--
Write events to a file with the date in the filename.
-->
</targets>
<rules>
<logger name="*" minlevel="Error" writeTo="file" />
<!-- add your logging rules here -->
<!--
Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace) to "f"
<logger name="*" minlevel="Debug" writeTo="f" />
-->
</rules>
</nlog>

数据库源配置参阅 https://github.com/liangshiw/LogDashboard/blob/master/samples/DatabaseSource/NLog.config

安装LogDashboard

准备工作已经结束,这时安装LogDashboard

Install-Package LogDashboard

添加自定义日志模型

在项目中添加ApplicationLogModel类,并继承 LogModel 接口

public class ApplicationLogModel : LogModel
{
public string Application { get; set; }
public string RequestMethod { get; set; }
public string MachineName { get; set; }
}

我们自定义了 ApplicationRequestMethodMachineName 属性

打开Startup.cs 文件

ConfigureServices 方法中配置服务

public void ConfigureServices(IServiceCollection services)
{
// 自定义变量
LogManager.Configuration.Variables["application"] = "CustomLogModel";
LogManager.Configuration.Variables["requestMethod"] = "Get";
services.AddLogDashboard(opt => { opt.CustomLogModel<ApplicationLogModel>(); });
}

AddLogDashoard 时使用optionsCustomLogModel 方法注册自定义模型,并使用了nlog的方法进行自定义变量值,因为machineName 是nlog预定义的变量,所以不需要手动斌值。更多内容请参阅nlog文档

Configure 方法配置中间件

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseLogDashboard();
app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello World!");
});
}

运行项目导航到 /logdashboard

enjoy