Rakesh Tripathy Ответов: 1

Как создать динамический файл журнала


Я генерирую файл журнала с помощью loggingConfiguration из конфигурационного файла, но мне нужно сгенерировать файл на основе значения сеанса.

Например: теперь файл создается как SQL. tsv, но мое требование - SQL_SessionValue.tsv

Что я уже пробовал:

<loggingConfiguration name="Logging Application Block" tracingEnabled="true"

    defaultCategory="General" logWarningsWhenNoCategoriesMatch="true">
    <listeners>
      <add listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.SystemDiagnosticsTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=5a46cd40fd11d886"

        traceOutputOptions="Timestamp" filter="All" type="System.Diagnostics.DefaultTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"

        name="Diagnostics Trace Listener" initializeData="" />
      <add fileName="D:\TestSolution\TEST\Log\SQL\SQL.tsv"

        footer="" formatter="Text SQL Formatter" header="" rollFileExistsBehavior="Increment"

        rollInterval="Day" rollSizeKB="1024" timeStampPattern="yyyyMMdd"

        listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.RollingFlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=5a46cd40fd11d886"

        traceOutputOptions="None" filter="All" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.RollingFlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=5a46cd40fd11d886"

        name="SQL Trace Listener" />
    </listeners>
  </loggingConfiguration>

Herman&lt;T&gt;.Instance

Как насчет изменения настройки: fileName="D:\TestSolution\TEST\Log\SQL\SQL.tsv"

Kornfeld Eliyahu Peter

Я думаю, что нет никакого способа сделать это во время выполнения...

Herman&lt;T&gt;.Instance

Вы это как следует проверили? И почему имя файла журнала так важно, как требование?

Kornfeld Eliyahu Peter

Если это корпоративная библиотека (как я думаю), то да-единственный способ-написать свой собственный прослушиватель трассировки...

Rakesh Tripathy

Имя файла должно изменяться динамически в зависимости от идентификатора пользователя входа в систему.

Sinisa Hajnal

Проверьте документацию ваших регистраторов и посмотрите,как вы можете изменить цель прослушивателей трассировки.

1 Ответов

Рейтинг:
1

Tabish Mateen

Привет,

Вы можете достичь этого, просто используя nLog.

один простой способ сделать это. Просто установите ThreadName, что бы вы ни хотели.

Пример конфигурационного файла :

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd">
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
      autoReload="true"
      throwExceptions="false"
      internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log" >


  <variable name="myvar" value="myvalue" />
 
  <targets>
 
    <target name="logfile" xsi:type="File" xmlns:xsi="#unknown">
  layout="${longdate} ${logger} ${message}"
  fileName="${specialfolder:folder=MyDocuments}/DynamicName/${shortdate}/Event-${threadname}.log" />
  
  </target></targets>

  <rules>
    <logger name="*" minlevel="Info" writeto="logfile" />
 
  </rules>
</nlog>


Rakesh Tripathy

Привет,

Спасибо за ваше предложение, но в соответствии с моим требованием я не могу использовать nLog или log4net.

В моем приведенном выше коде я хочу динамически изменить имя файла журнала. Если есть какое-либо решение, пожалуйста, напишите.

Tabish Mateen

Вы можете получить доступ к атрибуту, который хранит ваш путь, используя атрибут ["filename"]