Добавьте текущую дату к Файлу журнала с Log4Net

Вместо использования шаблонов классов для признаков в C ++ 11 вы можете использовать объявления функций (определение не требуется). Функции можно найти, используя поиск имени в зависимости от аргумента , так что вы можете специализировать черты для вашего класса в том же пространстве имен, где объявлен ваш класс.

Это полностью избавляет от необходимости закрывать пространство имен вашего класса, открывать пространство имен признаков, специализировать черту для вашего класса, используя его полное имя, закрывать пространство имен признаков, заново открывать пространство имен вашего учебный класс. А также устраняет необходимость включать объявление основного шаблона.

Пример:

#include 

template struct Type {};

template
void trait_of(Type); // Generic trait version.

namespace N {
struct A;
int trait_of(Type); // Trait specialisation for A.
} // N

int main() {
    using trait_of_a = decltype(trait_of(Type{})); // trait_of is found using ADL.
    static_assert(std::is_same::value, "");
}

Тип возвращаемого значения функции признака может быть контейнером нескольких типов, например :

template
void more_traits(Type); // Generic trait version. Must be specialized.

namespace N {
struct MoreTraitsOfA {
    using type_X = ...;
    using type_Y = ...;
};
MoreTraitsOfA more_traits(Type); // Trait specialisation for A.
} // N

using MoreTraits = decltype(more_traits(Type{})); 
using type_X = MoreTraits::type_X;
using type_Y = MoreTraits::type_Y;

12
задан Philipp M 10 October 2013 в 14:49
поделиться

3 ответа

Добавьте следующее к своему файлу конфигурации

<appender name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net">
  <param name="File" value="c:\\ProjectX\\Log\\log.txt"/>
  <param name="AppendToFile" value="true"/>
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
  <param name="RollingStyle" value="Date"/>
  <param name="DatePattern" value="yyyy.MM.dd"/>
  <param name="StaticLogFileName" value="true"/>
  <layout type="log4net.Layout.PatternLayout,log4net">
    <param name="ConversionPattern" value="%date [%thread] %-5level %logger - %message%newline"/>
  </layout>
</appender>
9
ответ дан 2 December 2019 в 03:54
поделиться

Использование StaticLogFileName:

<param name="StaticLogFileName" value="true"/>
1
ответ дан 2 December 2019 в 03:54
поделиться

Для тех, кому интересно, вот решение:

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    <param name="File" value="C:\\Users\\chris\\Documents\\log_.txt"/>
    <param name="RollingStyle" value="Date"/>
    <param name="DatePattern" value="_(yyyy.MM.dd-hh_mm_ss)"/>
    <param name="StaticLogFileName" value="false"/>
    <maximumFileSize value="100KB" />
    <appendToFile value="true" />
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />           
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message %stackTrace%newline" />
    </layout>
</appender>

и модульный тест, который проверяет это:

[Test]
public void TestLogger()
{
    logger.Info("Start Log");

    for (int i = 0; i < 2500; i++)
    {
        logger.Info(i);
    }

    logger.Info("End Log Log");
}

Это производит следующий вывод:

    log_.txt_(2009.02.19-01_16_34)

Едва ли, что я хотел, но лучше, чем, что я имел прежде.

12
ответ дан 2 December 2019 в 03:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: