服务端的TigerApi 框架,基于.NET6 2024 版本
Ben Lin
15 小时以前 a960900364d19bbf0ad7923a57989609e7fce798
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
<?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"
      throwConfigExceptions="true"
      internalLogLevel="info">
 
    <!-- enable asp.net core layout renderers
  <extensions>
    <add assembly="NLog.Web.AspNetCore"/>
  </extensions> -->
 
    <!-- the variables to write to -->
    <variable name="connectionString" value="server=172.18.8.57;database=wmslog;uid=root;pwd=Share@123;charset='utf8';SslMode=None;AllowLoadLocalInfile=true;"/>
 
    <!-- the targets to write to -->
    <targets async="true">
        <!--启用buffer-->
        <!--<default-wrapper xsi:type="BufferingWrapper" bufferSize="100"/>-->
 
        <target xsi:type="Null" name="blackhole" />
        <!--write logs to file-->
        <!--Default Log : 每天按每天存档,每个存档不大于10M-->
        <target name="default" xsi:type="File" archiveAboveSize="10485760" archiveNumbering="Sequence" archiveEvery="Day" KeepFileOpen="false"
                     fileName="Logs/${shortdate}.log" layout="`${longdate}[${level}] ${callsite} at ${callsite-linenumber} :: ${message}. ${onexception:${exception:format=tostring}${newline}${stacktrace}}`"/>
        <target name="default_db" xsi:type="Database" connectionString="${var:connectionString}" dbProvider="MySqlConnector.MySqlConnection, MySqlConnector">
            <commandText>
                INSERT INTO `default` (id,createtime,sequence,logtime,level,hostname,hostip,callsite,linenumber,message,exception,stacktrace,apiversion,apidir)
                VALUES (uuid(),CURRENT_TIMESTAMP(6),@sequence,@logtime,@level,@hostname,@hostip,@callsite,@linenumber,@message,@exception,@stacktrace,@apiversion,@apidir)
            </commandText>
            <parameter name = "@sequence" layout = "${sequenceid}" />
            <parameter name = "@logtime" layout = "${date}" />
            <parameter name = "@level" layout = "${level}"/>
            <parameter name = "@hostname" layout = "${hostname}"/>
            <parameter name = "@hostip" layout = "${local-ip}"/>
            <parameter name = "@callsite" layout = "${callsite}" />
            <parameter name = "@linenumber" layout = "${callsite-linenumber}" />
            <parameter name = "@message" layout = "${message}" />
            <parameter name = "@exception" layout = "${exception:format=tostring}" />
            <parameter name = "@stacktrace" layout = "${onexception:${stacktrace}}" />
            <parameter name = "@apiversion" layout = "${assembly-version}" />
            <parameter name = "@apidir" layout = "${basedir}" />
        </target>
        <!--No Callsite Log : 每天按每天存档,每个存档不大于10M-->
        <target name="noCaller" xsi:type="File" archiveAboveSize="10485760" archiveNumbering="Sequence" archiveEvery="Day" KeepFileOpen="false"
                     fileName="Logs/${shortdate}.log" layout="`${longdate}[${level}] ${message}. ${onexception:${exception:format=tostring}${newline}${stacktrace}}`"/>
        <!--Http Context Log : 每天按每天存档,每个存档不大于10M-->
        <target name="http" xsi:type="File" archiveAboveSize="10485760" archiveNumbering="Sequence" archiveEvery="Day" KeepFileOpen="false"
                     fileName="Logs/${shortdate}.http.log" layout="`${longdate}[${level}] HttpLog :: ${message}. ${onexception:${exception:format=tostring}${newline}${stacktrace}}`"/>
        <target name="http_db" xsi:type="Database" connectionString="${var:connectionString}" dbProvider="MySqlConnector.MySqlConnection, MySqlConnector">
            <commandText>
                INSERT INTO `http` (id,createtime,sequence,logtime,level,hostname,hostip,callsite,linenumber,message,exception,stacktrace,apiversion,apidir)
                VALUES (uuid(),CURRENT_TIMESTAMP(6),@sequence,@logtime,@level,@hostname,@hostip,@callsite,@linenumber,@message,@exception,@stacktrace,@apiversion,@apidir)
            </commandText>
            <parameter name = "@sequence" layout = "${sequenceid}" />
            <parameter name = "@logtime" layout = "${date}" />
            <parameter name = "@level" layout = "${level}"/>
            <parameter name = "@hostname" layout = "${hostname}"/>
            <parameter name = "@hostip" layout = "${local-ip}"/>
            <parameter name = "@callsite" layout = "${callsite}" />
            <parameter name = "@linenumber" layout = "${callsite-linenumber}" />
            <parameter name = "@message" layout = "${message}" />
            <parameter name = "@exception" layout = "${exception:format=tostring}" />
            <parameter name = "@stacktrace" layout = "${onexception:${stacktrace}}" />
            <parameter name = "@apiversion" layout = "${assembly-version}" />
            <parameter name = "@apidir" layout = "${basedir}" />
        </target>
        <!--Scheduler Log : 每天按每天存档,每个存档不大于10M-->
        <target name="scheduler" xsi:type="File" archiveAboveSize="10485760" archiveNumbering="Sequence" archiveEvery="Day" KeepFileOpen="false"
                     fileName="Logs/${shortdate}.scheduler.log" layout="`${longdate}[${level}] SchedulerLog :: ${newline}${message}. ${onexception:${exception:format=tostring}${newline}${stacktrace}}`"/>
        <target name="scheduler_db" xsi:type="Database" connectionString="${var:connectionString}" dbProvider="MySqlConnector.MySqlConnection, MySqlConnector">
            <commandText>
                INSERT INTO `scheduler` (id,createtime,sequence,logtime,level,hostname,hostip,callsite,linenumber,message,exception,stacktrace,apiversion,apidir)
                VALUES (uuid(),CURRENT_TIMESTAMP(6),@sequence,@logtime,@level,@hostname,@hostip,@callsite,@linenumber,@message,@exception,@stacktrace,@apiversion,@apidir)
            </commandText>
            <parameter name = "@sequence" layout = "${sequenceid}" />
            <parameter name = "@logtime" layout = "${date}" />
            <parameter name = "@level" layout = "${level}"/>
            <parameter name = "@hostname" layout = "${hostname}"/>
            <parameter name = "@hostip" layout = "${local-ip}"/>
            <parameter name = "@callsite" layout = "${callsite}" />
            <parameter name = "@linenumber" layout = "${callsite-linenumber}" />
            <parameter name = "@message" layout = "${message}" />
            <parameter name = "@exception" layout = "${exception:format=tostring}" />
            <parameter name = "@stacktrace" layout = "${onexception:${stacktrace}}" />
            <parameter name = "@apiversion" layout = "${assembly-version}" />
            <parameter name = "@apidir" layout = "${basedir}" />
        </target>
        <!--Interface Log : 每天按每天存档,每个存档不大于10M-->
        <target name="Interface" xsi:type="File" archiveAboveSize="10485760" archiveNumbering="Sequence" archiveEvery="Day" KeepFileOpen="false"
                     fileName="Logs/${shortdate}.Interface.log" layout="`${longdate}[${level}] InterfaceLog :: ${newline}${message}. ${onexception:${exception:format=tostring}${newline}${stacktrace}}`"/>
        <target name="Interface_db" xsi:type="Database" connectionString="${var:connectionString}" dbProvider="MySqlConnector.MySqlConnection, MySqlConnector">
            <commandText>
                INSERT INTO `Interface` (id,createtime,sequence,logtime,level,hostname,hostip,callsite,linenumber,message,exception,stacktrace,apiversion,apidir)
                VALUES (uuid(),CURRENT_TIMESTAMP(6),@sequence,@logtime,@level,@hostname,@hostip,@callsite,@linenumber,@message,@exception,@stacktrace,@apiversion,@apidir)
            </commandText>
            <parameter name = "@sequence" layout = "${sequenceid}" />
            <parameter name = "@logtime" layout = "${date}" />
            <parameter name = "@level" layout = "${level}"/>
            <parameter name = "@hostname" layout = "${hostname}"/>
            <parameter name = "@hostip" layout = "${local-ip}"/>
            <parameter name = "@callsite" layout = "${callsite}" />
            <parameter name = "@linenumber" layout = "${callsite-linenumber}" />
            <parameter name = "@message" layout = "${message}" />
            <parameter name = "@exception" layout = "${exception:format=tostring}" />
            <parameter name = "@stacktrace" layout = "${onexception:${stacktrace}}" />
            <parameter name = "@apiversion" layout = "${assembly-version}" />
            <parameter name = "@apidir" layout = "${basedir}" />
        </target>
        <!--Shelf Log : 每天按每天存档,每个存档不大于10M-->
        <target name="shelf" xsi:type="File" archiveAboveSize="10485760" archiveNumbering="Sequence" archiveEvery="Day" KeepFileOpen="false"
                       fileName="Logs/ShelfLog/${shortdate}.shelf.log" layout="`${longdate}[${level}] ShelfHttpLog :: ${newline}${message}. ${onexception:${exception:format=tostring}${newline}${stacktrace}}`"/>
        <target name="shelf_db" xsi:type="Database" connectionString="${var:connectionString}" dbProvider="MySqlConnector.MySqlConnection, MySqlConnector">
            <commandText>
                INSERT INTO `shelf` (id,createtime,sequence,logtime,level,hostname,hostip,callsite,linenumber,message,exception,stacktrace,apiversion,apidir)
                VALUES (uuid(),CURRENT_TIMESTAMP(6),@sequence,@logtime,@level,@hostname,@hostip,@callsite,@linenumber,@message,@exception,@stacktrace,@apiversion,@apidir)
            </commandText>
            <parameter name = "@sequence" layout = "${sequenceid}" />
            <parameter name = "@logtime" layout = "${date}" />
            <parameter name = "@level" layout = "${level}"/>
            <parameter name = "@hostname" layout = "${hostname}"/>
            <parameter name = "@hostip" layout = "${local-ip}"/>
            <parameter name = "@callsite" layout = "${callsite}" />
            <parameter name = "@linenumber" layout = "${callsite-linenumber}" />
            <parameter name = "@message" layout = "${message}" />
            <parameter name = "@exception" layout = "${exception:format=tostring}" />
            <parameter name = "@stacktrace" layout = "${onexception:${stacktrace}}" />
            <parameter name = "@apiversion" layout = "${assembly-version}" />
            <parameter name = "@apidir" layout = "${basedir}" />
        </target>
        <!--Console Log : 输出到控制台-->
        <target name="console" xsi:type="ColoredConsole" useDefaultRowHighlightingRules="true" layout="`${longdate}[${level}] ${callsite} at ${callsite-linenumber} :: ${message}. ${onexception:${exception:format=tostring}${newline}${stacktrace}}`">
            <highlight-row condition="level == LogLevel.Fatal" foregroundColor="Red"/>
            <highlight-row condition="level == LogLevel.Error" foregroundColor="Magenta"/>
            <highlight-row condition="level == LogLevel.Warn" foregroundColor="Yellow"/>
            <highlight-row condition="level == LogLevel.Info" foregroundColor="Green"/>
            <highlight-row condition="level == LogLevel.Debug" foregroundColor="Gray"/>
            <highlight-row condition="level == LogLevel.Trace" foregroundColor="Cyan"/>
            <highlight-word text="Exception" ignoreCase="true" foregroundColor="White" backgroundColor="Magenta"/>
        </target>
    </targets>
 
    <!-- rules to map from logger name to target -->
    <rules>
        <!--All logs, including from Microsoft-->
        <!--<logger name="*" minlevel="Trace" writeTo="allfile" />-->
        <!--Local Log-->
        <logger name="default" minlevel="Trace" writeTo="default" />
        <logger name="noCaller" minlevel="Trace" writeTo="noCaller" />
        <logger name="console" minlevel="Trace" writeTo="default" />
        <logger name="console" minlevel="Trace" writeTo="console" />
        <logger name="http" minlevel="Trace" writeTo="http" />
        <logger name="scheduler" minlevel="Trace" writeTo="scheduler" />
        <logger name="Interface" minlevel="Trace" writeTo="Interface" />
        <logger name="shelf" minlevel="Trace" writeTo="shelf" />
        <!--DB Log-->
        <!--<logger name="default" minlevel="Trace" writeTo="default_db" />
        <logger name="noCaller" minlevel="Trace" writeTo="default_db" />
        <logger name="console" minlevel="Trace" writeTo="default_db" />
        <logger name="http" minlevel="Trace" writeTo="http_db" />
        <logger name="scheduler" minlevel="Trace" writeTo="scheduler_db" />
        <logger name="Interface" minlevel="Trace" writeTo="Interface_db" />
        <logger name="shelf" minlevel="Trace" writeTo="shelf_db" />-->
 
        <!--Skip Microsoft logs and so log only own logs-->
        <logger name="Microsoft.*" minlevel="Trace" writeTo="default" final="true" />
    </rules>
</nlog>