我已经编写了 c# WebAPI,并想使用 log4net 将请求记录到文件中。将日志写入日志文件后,我想将这些日志文件(将使用 DelegateHandler 捕获所有请求)推送到 ElasticSearch。我到处搜索但找不到解决我的问题的方法。以下是我拥有的 log4net.config 文件(ElasticAppender 不起作用)
<log4net>
<root>
<appender-ref ref="FileAppender" />
<appender-ref ref="ElasticSearchAppender" />
</root>
<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="Logs/API_.log" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<datePattern value="yyyy-MM-dd" />
<maximumFileSize value="10MB" />
<preserveLogFileNameExtension value="true"/>
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{HH:mm:ss.fff}, %message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="DEBUG" />
<levelMax value="ERROR" />
</filter>
</appender>
<appender name="ElasticSearchAppender" type="log4net.ElasticSearch.ElasticSearchAppender, log4stash">
<Server>elasticnode01</Server>
<Port>9200</Port>
<IndexName>apilogentry</IndexName>
<ElasticFilters>
<Filter type="log4net.ElasticSearch.Filters.RenameKeyFilter, log4stash">
<Key>processId</Key>
<RenameTo>ServiceName</RenameTo>
</Filter>
<Filter type="log4net.ElasticSearch.Filters.RenameKeyFilter, log4stash">
<Key>Message</Key>
<RenameTo>message</RenameTo> …Run Code Online (Sandbox Code Playgroud)