master
bicijinlian 5 years ago
parent d29bfc0088
commit 3e6cd7d64a

@ -3,7 +3,6 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
namespace NLogStudy.WebCore2.Study.Controllers
{
@ -11,17 +10,17 @@ namespace NLogStudy.WebCore2.Study.Controllers
[ApiController]
public class ValuesController : ControllerBase
{
private readonly ILogger logger;
public ValuesController(ILogger<ValuesController> logger)
private readonly NLog.ILogger logger;
public ValuesController(INLogWrap<ValuesController> logWrap)
{
this.logger = logger;
this.logger = logWrap.logger;
}
// GET api/values
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
logger.LogError("我是测试错误");
logger.LogDebug("我是Debug");
var user = new WebUser() { Id=1,Name="王高峰",Role="Admin", Project="sywh"};
logger.Error("错误日志 {@WebUser}", user);
return new string[] { "value1", "value2" };
}
@ -50,4 +49,14 @@ namespace NLogStudy.WebCore2.Study.Controllers
{
}
}
public class WebUser
{
public int Id { get; set; }
public string Name { get; set; }
public string Role { get; set; }
public string Project { get; set; }
}
}

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace NLogStudy.WebCore2.Study
{
public interface INLogWrap<T>
{
NLog.ILogger logger { get; set; }
}
}

@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using NLog;
using NLog.Fluent;
namespace NLogStudy.WebCore2.Study
{
public class NLogWrap<T> : INLogWrap<T>
{
public NLogWrap()
{
logger = NLog.LogManager.GetLogger(typeof(T).FullName);
}
public ILogger logger { get; set; }
public void Error()
{
logger.Error().Message("TESTSA");
}
}
}

@ -25,6 +25,8 @@ namespace NLogStudy.WebCore2.Study
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddScoped(typeof(NLogWrap<>));
services.AddScoped(typeof(INLogWrap<>), typeof(NLogWrap<>));
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.

@ -16,45 +16,35 @@
<!--自定义变量-->
<variable name="myvariable" value="test" />
<!--设置目标-->
<targets>
<!--默认彩色控制台-->
<target xsi:type="ColoredConsole"
<target xsi:type="ColoredConsole"
name="ColoredConsoleLog"
encoding="utf-8"
layout="${longdate}|${level:uppercase=true}|${logger}|${message}"
layout="${longdate}|${level:uppercase=true}|${logger}|${message}|${event-properties:WebUser}|${event-properties:WebUser:objectpath=Id}"
/>
<!--调试窗口-->
<target name="debugLog" xsi:type="Debugger" layout="${logger}::${message}"/>
<!--layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}"-->
<!--写入通用日志文件-->
<target xsi:type="File"
name="allfile"
fileName="${basedir}\logs\nlog-all-${shortdate}.log"
layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}">
</target>
<target xsi:type="Database"
name="MySQLTarget"
dbProvider="MySql.Data.MySqlClient.MySqlConnection, MySql.Data"
connectionString="server=127.0.0.1;port=3306;user=root;password=yt-461400;database=nlog;Sslmode=None;Character Set=utf8;"
keepConnection="false"
commandType="Text"
commandText="insert into applog (zl_timestamp, zl_user, zl_level, zl_type, zl_message, zl_exception, zl_project) values (@timestamp,@user,@level,@type,@message,@exception,@project);"
>
<parameter name="@timestamp" layout="${longdate}"/>
<parameter name="@user" layout="${event-context:item=user}"/>
<parameter name="@level" layout="${level}"/>
<parameter name="@type" layout="${event-context:item=type}"/>
<parameter name="@message" layout="${message}"/>
<parameter name="@exception" layout="${exception:tostring}"/>
<parameter name="@project" layout="${event-context:item=project}"/>
<target xsi:type="File" name="allfile" fileName="${basedir}\logs\nlog-all-${shortdate}.log">
<layout xsi:type="CompoundLayout">
<layout xsi:type="SimpleLayout" text="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}" />
<layout xsi:type="JsonLayout">
<attribute name="time" layout="${longdate}" />
<attribute name="level" layout="${level:upperCase=true}"/>
<attribute name="message" layout="${message}" />
</layout>
</layout>
</target>
</targets>
<!--设置规则-->
<rules>
<logger ruleName="*" minlevel="Warn" writeTo="ColoredConsoleLog,debugLog,allfile" />
<logger ruleName="*" minlevel="Debug" writeTo="ColoredConsoleLog,debugLog,allfile" />
</rules>
</nlog>
Loading…
Cancel
Save