<!--把日志输出到数据库 --> <targetxsi:type="Database"name="database"dbProvider="MySqlConnector.MySqlConnection, MySqlConnector"> <connectionString>${configsetting:item=ConnectionStrings.GDbContext}</connectionString> <install-commandignoreFailures="true"> <text> <!-- NOTE: call LogManager.Configuration.Install(new InstallationContext()); to execute this query. --> CREATE TABLE IF NOT EXISTS `Sys_Log${date:format=yyyyMMdd}` ( `Id` bigint NOT NULL AUTO_INCREMENT, `CreateTime` datetime NOT NULL, `AppName` varchar(50) NOT NULL, `Level` varchar(50) NOT NULL, `Logger` varchar(1024) NULL DEFAULT NULL, `Msg` text NULL, `Exception` text NULL, `UserId` varchar(50) NULL DEFAULT NULL, `Url` varchar(1024) NULL DEFAULT NULL, `IP` varchar(255) NULL DEFAULT NULL, PRIMARY KEY (`Id`) USING BTREE ); </text> </install-command> <commandText> INSERT INTO `Sys_Log${date:format=yyyyMMdd}`(`CreateTime`, `AppName`, `Level`, `Logger`, `Msg`, `Exception`, `UserId`, `Url`, `IP`) VALUES (@CreateTime, @AppName, @Level, @Logger, @Msg, @Exception, @UserId, @Url, @IP); </commandText> <parametername="@CreateTime"layout="${longdate}" /> <parametername="@AppName"layout="${var:AppName}" /> <parametername="@Level"layout="${level}" /> <parametername="@Logger"layout="${logger}"allowDbNull="true" /> <parametername="@Msg"layout="${message}"allowDbNull="true" /> <parametername="@Exception"layout="${exception:format=tostring}"allowDbNull="true" /> <parametername="@UserId"layout="${aspnet-user-claim:userId}"allowDbNull="true" /> <parametername="@Url"layout="${aspnet-request-url}"allowDbNull="true" /> <parametername="@IP"layout="${aspnet-request-ip}"allowDbNull="true" /> </target> </targets>
<!-- 日志输出规则 --> <rules> <!--All logs, including from Microsoft--> <!--<logger name="*" minlevel="Trace" writeTo="allfile" />-->
<!--Output hosting lifetime messages to console target for faster startup detection --> <loggername="Microsoft.Hosting.Lifetime"minlevel="Info"writeTo="lifetimeConsole, ownFile-web, database"final="true" /> <loggername="Microsoft.EntityFrameworkCore.Model.Validation"maxlevel="Error"final="true" />
<!--Skip non-critical Microsoft logs and so log only own logs (BlackHole) --> <loggername="Microsoft.*"maxlevel="Info"final="true" /> <loggername="System.Net.Http.*"maxlevel="Info"final="true" />