mirror of
https://github.com/gnh1201/welsonjs.git
synced 2026-01-27 19:49:19 +00:00
Replaces the custom ICompatibleLogger and TraceLogger with log4net for logging, introducing LoggingBootstrap for environment-aware log4net initialization. Refactors all resource tools to use IApiEndpoint and moves them to the ApiEndpoints namespace. Updates project references, configuration, and adds a log4net.config for consistent logging setup.
116 lines
4.9 KiB
XML
116 lines
4.9 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<log4net>
|
|
|
|
<!--
|
|
WelsonJS "drop-in" config.
|
|
- No buffering (to avoid "no logs" issues)
|
|
- Console + File always enabled
|
|
- Root level DEBUG (works for both prod/dev; control verbosity via logger levels if needed)
|
|
|
|
GlobalContext keys set by LoggingBootstrap.Init(profile):
|
|
pid, host, user, ver, profile,
|
|
machine, domain, interactive, elevated,
|
|
os, osVer, archProc, archOS, is64Proc, is64OS,
|
|
runtime, culture, uiCulture, tz,
|
|
exe, cwd, cmd,
|
|
procName, startUtc, ws
|
|
|
|
ThreadContext keys (optional, per job/script):
|
|
script, session, req
|
|
-->
|
|
|
|
<!-- =====================================================
|
|
1) Main log file (date + size rolling)
|
|
===================================================== -->
|
|
<appender name="File" type="log4net.Appender.RollingFileAppender">
|
|
<file value="logs/welsonjs.log" />
|
|
<appendToFile value="true" />
|
|
|
|
<rollingStyle value="Composite" />
|
|
<datePattern value="'.'yyyyMMdd" />
|
|
<staticLogFileName value="true" />
|
|
|
|
<maximumFileSize value="10MB" />
|
|
<maxSizeRollBackups value="10" />
|
|
|
|
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
|
|
<immediateFlush value="true" />
|
|
|
|
<layout type="log4net.Layout.PatternLayout">
|
|
<conversionPattern value="%date{ISO8601} %-5level [pid=%property{pid}] [thr=%thread] [host=%property{host}] [user=%property{user}] [ver=%property{ver}] [profile=%property{profile}] [machine=%property{machine}] [domain=%property{domain}] [interactive=%property{interactive}] [elevated=%property{elevated}] [os=%property{os}] [osVer=%property{osVer}] [archProc=%property{archProc}] [archOS=%property{archOS}] [is64Proc=%property{is64Proc}] [is64OS=%property{is64OS}] [runtime=%property{runtime}] [culture=%property{culture}] [uiCulture=%property{uiCulture}] [tz=%property{tz}] [procName=%property{procName}] [startUtc=%property{startUtc}] [ws=%property{ws}] [exe=%property{exe}] [cwd=%property{cwd}] [cmd=%property{cmd}] [script=%property{script}] [session=%property{session}] [req=%property{req}] %logger - %message%newline%exception" />
|
|
</layout>
|
|
</appender>
|
|
|
|
<!-- =====================================================
|
|
2) Error-only log file
|
|
===================================================== -->
|
|
<appender name="ErrorFile" type="log4net.Appender.RollingFileAppender">
|
|
<file value="logs/welsonjs.error.log" />
|
|
<appendToFile value="true" />
|
|
|
|
<rollingStyle value="Composite" />
|
|
<datePattern value="'.'yyyyMMdd" />
|
|
<staticLogFileName value="true" />
|
|
|
|
<maximumFileSize value="10MB" />
|
|
<maxSizeRollBackups value="20" />
|
|
|
|
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
|
|
<immediateFlush value="true" />
|
|
|
|
<filter type="log4net.Filter.LevelRangeFilter">
|
|
<levelMin value="ERROR" />
|
|
<levelMax value="FATAL" />
|
|
</filter>
|
|
<filter type="log4net.Filter.DenyAllFilter" />
|
|
|
|
<layout type="log4net.Layout.PatternLayout">
|
|
<conversionPattern value="%date{ISO8601} %-5level [pid=%property{pid}] [thr=%thread] [host=%property{host}] [user=%property{user}] [ver=%property{ver}] [profile=%property{profile}] [machine=%property{machine}] [elevated=%property{elevated}] [os=%property{os}] [runtime=%property{runtime}] [tz=%property{tz}] [exe=%property{exe}] [cwd=%property{cwd}] [script=%property{script}] [session=%property{session}] [req=%property{req}] %logger - %message%newline%exception" />
|
|
</layout>
|
|
</appender>
|
|
|
|
<!-- =====================================================
|
|
3) Console (always enabled; useful for dev + troubleshooting)
|
|
===================================================== -->
|
|
<appender name="Console" type="log4net.Appender.ConsoleAppender">
|
|
<layout type="log4net.Layout.PatternLayout">
|
|
<conversionPattern value="%-5level %date{HH:mm:ss} [pid=%property{pid}] [host=%property{host}] [ver=%property{ver}] [profile=%property{profile}] [script=%property{script}] %logger - %message%newline%exception" />
|
|
</layout>
|
|
</appender>
|
|
|
|
<!-- =====================================================
|
|
4) Root logger (works for both prod/dev)
|
|
- Keep DEBUG to guarantee logs show up.
|
|
- If prod needs quieter logs, raise levels for noisy namespaces.
|
|
===================================================== -->
|
|
<root>
|
|
<level value="DEBUG" />
|
|
<appender-ref ref="File" />
|
|
<appender-ref ref="ErrorFile" />
|
|
<appender-ref ref="Console" />
|
|
</root>
|
|
|
|
<!-- =====================================================
|
|
5) Optional: reduce noise in prod by tuning specific namespaces
|
|
(uncomment and adjust as needed)
|
|
===================================================== -->
|
|
<!--
|
|
<logger name="System">
|
|
<level value="WARN" />
|
|
</logger>
|
|
|
|
<logger name="Microsoft">
|
|
<level value="WARN" />
|
|
</logger>
|
|
|
|
<logger name="WelsonJS.Network">
|
|
<level value="INFO" />
|
|
</logger>
|
|
|
|
<logger name="WelsonJS.Security">
|
|
<level value="WARN" />
|
|
</logger>
|
|
-->
|
|
|
|
</log4net>
|