log4net с CloudWatch, не могу увидеть мои журналы в консоли
Я использую пример отсюда
Моя конфигурация log4net выглядит так:
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net debug="true">
<appender name="AWS" type="AWS.Logger.Log4net.AWSAppender,AWS.Logger.Log4net">
<LogGroup>MY_Logs</LogGroup>
<Region>us-west-2</Region>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-4timestamp [%thread] %-5level %logger %ndc - %message%newline" />
</layout>
</appender>
<root>
<level value="ALL"/>
<appender-ref ref="AWS" />
</root>
</log4net>
</configuration>
мой app.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="AWSProfilesLocation" value="awscredentials" />
<add key="AWSRegion" value="us-west-2" />
</appSettings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.8.0" newVersion="2.0.8.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
мои неожиданности
[default]
aws_access_key_id=[my_id]
aws_secret_access_key=[my_access_key]
вот отладочная информация в моем консольном приложении:
log4net: Configuration update mode [Merge].
log4net: Logger [root] Level string is [ALL].
log4net: Logger [root] level set to [name="ALL",value=-2147483648].
log4net: Loading Appender [AWS] type: [AWS.Logger.Log4net.AWSAppender,AWS.Logger
.Log4net]
log4net: Setting Property [LogGroup] to String value [MY_Logs]
log4net: Setting Property [Region] to String value [us-west-2]
log4net: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=F
alse]
log4net: Converter [newline] Option [] Format [min=-1,max=2147483647,leftAlign=F
alse]
log4net: Setting Property [ConversionPattern] to String value [%-4timestamp [%th
read] %-5level %logger %ndc - %message%newline]
log4net: Converter [timestamp] Option [] Format [min=4,max=2147483647,leftAlign=
True]
log4net: Converter [literal] Option [ [] Format [min=-1,max=2147483647,leftAlign
=False]
log4net: Converter [thread] Option [] Format [min=-1,max=2147483647,leftAlign=Fa
lse]
log4net: Converter [literal] Option [] ] Format [min=-1,max=2147483647,leftAlign
=False]
log4net: Converter [level] Option [] Format [min=5,max=2147483647,leftAlign=True
]
log4net: Converter [literal] Option [ ] Format [min=-1,max=2147483647,leftAlign=
False]
log4net: Converter [logger] Option [] Format [min=-1,max=2147483647,leftAlign=Fa
lse]
log4net: Converter [literal] Option [ ] Format [min=-1,max=2147483647,leftAlign=
False]
log4net: Converter [ndc] Option [] Format [min=-1,max=2147483647,leftAlign=False
]
log4net: Converter [literal] Option [ - ] Format [min=-1,max=2147483647,leftAlig
n=False]
log4net: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=F
alse]
log4net: Converter [newline] Option [] Format [min=-1,max=2147483647,leftAlign=F
alse]
log4net: Setting Property [Layout] to object [log4net.Layout.PatternLayout]
log4net: Creating repository for assembly [AWSSDK.Core, Version=3.3.0.0, Culture
=neutral, PublicKeyToken=885c28607f98e604]
log4net: Assembly [AWSSDK.Core, Version=3.3.0.0, Culture=neutral, PublicKeyToken
=885c28607f98e604] Loaded From [C:\Users\stal\documents\visual studio 2017\Proje
cts\ConsoleApp9\ConsoleApp9\bin\Debug\AWSSDK.Core.dll]
log4net: Assembly [AWSSDK.Core, Version=3.3.0.0, Culture=neutral, PublicKeyToken
=885c28607f98e604] does not have a RepositoryAttribute specified.
log4net: Assembly [AWSSDK.Core, Version=3.3.0.0, Culture=neutral, PublicKeyToken
=885c28607f98e604] using repository [log4net-default-repository] and repository
type [log4net.Repository.Hierarchy.Hierarchy]
log4net: repository [log4net-default-repository] already exists, using repositor
y type [log4net.Repository.Hierarchy.Hierarchy]
log4net: Creating repository for assembly [AWSSDK.CloudWatchLogs, Version=3.3.0.
0, Culture=neutral, PublicKeyToken=885c28607f98e604]
log4net: Assembly [AWSSDK.CloudWatchLogs, Version=3.3.0.0, Culture=neutral, Publ
icKeyToken=885c28607f98e604] Loaded From [C:\Users\stal\documents\visual studio
2017\Projects\ConsoleApp9\ConsoleApp9\bin\Debug\AWSSDK.CloudWatchLogs.dll]
log4net: Assembly [AWSSDK.CloudWatchLogs, Version=3.3.0.0, Culture=neutral, Publ
icKeyToken=885c28607f98e604] does not have a RepositoryAttribute specified.
log4net: Assembly [AWSSDK.CloudWatchLogs, Version=3.3.0.0, Culture=neutral, Publ
icKeyToken=885c28607f98e604] using repository [log4net-default-repository] and r
epository type [log4net.Repository.Hierarchy.Hierarchy]
log4net: repository [log4net-default-repository] already exists, using repositor
y type [log4net.Repository.Hierarchy.Hierarchy]
log4net: Created Appender [AWS]
log4net: Adding appender named [AWS] to logger [root].
log4net: Hierarchy Threshold []
Я не вижу ничего необычного в отладочной информации.
Глядя на мою консоль aws cloudwatch, я не вижу группу My_Logs.
У меня есть разрешения на просмотр / запись в cloudwatch.
Любая идея?
1 ответ
Я столкнулся с подобной проблемой, мои журналы log4net не записывали в CloudWatch, хотя казалось, что конфигурация была правильной. Я смог найти проблему (в моем случае мне не хватало некоторых параметров конфигурации), включив функцию регистрации в AWS.Logger.Log4net, добавив в узел appender следующее
<LibraryLogFileName>c:\logs\awslog.txt</LibraryLogFileName>
Так что в вашем случае новый раздел конфигурации будет выглядеть
<appender name="AWS" type="AWS.Logger.Log4net.AWSAppender,AWS.Logger.Log4net">
<LogGroup>MY_Logs</LogGroup>
<Region>us-west-2</Region>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-4timestamp [%thread] %-5level %logger %ndc - %message%newline" />
</layout>
<LibraryLogFileName>c:\logs\awslog.txt</LibraryLogFileName>
</appender>
Просто убедитесь, что вы быстро проверили файл журнала, в моем случае он быстро увеличился. Надеемся, что сообщения об ошибках в файле журнала укажут вам на проблему.
Согласно документации:
Чтобы встроить данные конфигурации в файл.config, имя раздела должно быть идентифицировано в анализаторе файла конфигурации.NET с использованием элемента configSections. В разделе должен быть указан log4net.Config.Log4NetConfigurationSectionHandler, который будет использоваться для анализа раздела конфигурации.
Который отсутствует в вашем конфигурационном файле. Поэтому добавьте следующее:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>