log4net - протоколирование связи через интерфейс COM - PullRequest
0 голосов
/ 03 декабря 2018

Приложение было разработано на c ++ и c #.Связь между c ++ и c # будет происходить через COM Interop.

Планировал использовать log4net на стороне c # для ведения журнала.

Исполняемый файл C ++ будет выступать в качестве основного проекта, все проекты c # были библиотеками классов.

Я добавил новый файл app.config,

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net , Version=2.0.8, Culture=neutral, PublicKeyToken=1b44e1d426115821" />
</configSections>
<log4net>
    <root>
      <level value="ALL" />
      <appender-ref ref="logfilejson" />     
    </root> 
     <appender name="logfilejson" type="log4net.Appender.RollingFileAppender">
      <lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" />
       <file type="log4net.Util.PatternString" 
        value="%envFolderPath{CommonApplicationData}\\Logs\\logA_%date{yyyy_MM_dd}.log" />
      <appendToFile value="true" />
      <staticLogFileName value="true" />
      <rollingStyle value="Date" />
      <datePattern value="yyyy_MM_dd"/>
      <layout type="log4net.Layout.SerializedLayout, log4net.Ext.Json">
        <decorator type="log4net.Layout.Decorators.StandardTypesDecorator, log4net.Ext.Json" />
        <default />
        <remove value="message" />
        <remove value="ndc"/>
        <remove value="appname"/>
        <remove value="logger"/>
        <remove value="date"/>
        <remove value="level"/>
        <remove value="thread"/>        
        <member value="timestamp%date:yyyy-MM-dd HH:mm:ss,fff" />
      </layout>
    </appender>
  </log4net>

<appSettings>
       <add key="log4net.Internal.Debug" value="true" />
   </appSettings>
   <system.diagnostics>
      <trace autoflush="true" indentsize="4" >
        <listeners>
          <add name="textWriterTraceListener"
              type="System.Diagnostics.TextWriterTraceListener"
              initializeData="E:\\log4net.txt" />
          <remove name="Default" />
        </listeners>
      </trace>
   </system.diagnostics>
</configuration>

И в,

файле AssemblyInfo.cs Указано на расположение файла app.config,

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "C:\\Program Files (x86)\\Application\\app.config", Watch = true)]

Наличие файла двух классов впроект библиотеки классов.

Class1.cs и Class2.cs

Когда функции Class1 были вызваны из исполняемого файла c ++, ведение журнала происходило правильно.

log4net.Config.XmlConfigurator.Configure();
private static readonly ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

log4net.LogManager.GetRepository (). Configured - true, это было верно при отладке.

Но журналы Class2 не регистрировались, и при отладке эта log4net.LogManager.GetRepository (). Configured - true также для Class2.

E: \ log4net.txt - внутренний файл отладки также не создан.Я не могу понять, в чем может быть проблема.Кто-нибудь может мне помочь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...