master
bicijinlian 6 years ago
parent d29bfc0088
commit 3e6cd7d64a

@ -3,7 +3,6 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
namespace NLogStudy.WebCore2.Study.Controllers namespace NLogStudy.WebCore2.Study.Controllers
{ {
@ -11,17 +10,17 @@ namespace NLogStudy.WebCore2.Study.Controllers
[ApiController] [ApiController]
public class ValuesController : ControllerBase public class ValuesController : ControllerBase
{ {
private readonly ILogger logger; private readonly NLog.ILogger logger;
public ValuesController(ILogger<ValuesController> logger) public ValuesController(INLogWrap<ValuesController> logWrap)
{ {
this.logger = logger; this.logger = logWrap.logger;
} }
// GET api/values // GET api/values
[HttpGet] [HttpGet]
public ActionResult<IEnumerable<string>> Get() public ActionResult<IEnumerable<string>> Get()
{ {
logger.LogError("我是测试错误"); var user = new WebUser() { Id=1,Name="王高峰",Role="Admin", Project="sywh"};
logger.LogDebug("我是Debug"); logger.Error("错误日志 {@WebUser}", user);
return new string[] { "value1", "value2" }; 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) public void ConfigureServices(IServiceCollection services)
{ {
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); 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. // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.

@ -23,38 +23,28 @@
<target xsi:type="ColoredConsole" <target xsi:type="ColoredConsole"
name="ColoredConsoleLog" name="ColoredConsoleLog"
encoding="utf-8" 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}"/> <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" <target xsi:type="File" name="allfile" fileName="${basedir}\logs\nlog-all-${shortdate}.log">
name="allfile" <layout xsi:type="CompoundLayout">
fileName="${basedir}\logs\nlog-all-${shortdate}.log" <layout xsi:type="SimpleLayout" text="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}" />
layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}"> <layout xsi:type="JsonLayout">
</target> <attribute name="time" layout="${longdate}" />
<target xsi:type="Database" <attribute name="level" layout="${level:upperCase=true}"/>
name="MySQLTarget" <attribute name="message" layout="${message}" />
dbProvider="MySql.Data.MySqlClient.MySqlConnection, MySql.Data" </layout>
connectionString="server=127.0.0.1;port=3306;user=root;password=yt-461400;database=nlog;Sslmode=None;Character Set=utf8;" </layout>
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> </target>
</targets> </targets>
<!--设置规则--> <!--设置规则-->
<rules> <rules>
<logger ruleName="*" minlevel="Warn" writeTo="ColoredConsoleLog,debugLog,allfile" /> <logger ruleName="*" minlevel="Debug" writeTo="ColoredConsoleLog,debugLog,allfile" />
</rules> </rules>
</nlog> </nlog>
Loading…
Cancel
Save