Anotar.Serilog和日志记录

时间:2015-11-26 09:12:51

标签: wpf serilog fody

我假设我对Anotar / Serilog很陌生,我的WPF应用程序使用了存储库模式,而且我的回购结构为

public class CalendarRepository : DefaultRepositoryBase, ICalendarRepository
{
    public Task<IList<CalendarTemplate>> GetCalendarTemplatesAsync(int? template)
    {
        JsonServiceClient client = GetServiceStackClient();

        var request = new CalendarTemplatesRequest
        {
            Template = template
        };
        return client.PostAsync(request);
    }

    public Task<IList<Currency>> GetCurrenciesAsync(int? currency)
    {
        JsonServiceClient client = GetServiceStackClient();

        var request = new CurrenciesRequest
        {
            Currency = currency
        };
        return client.PostAsync(request);
    }

    public Task<IList<CurrencyCalendar>> GetCurrencyCalendarsAsync(IEnumerable<int> currencies)
    {
        JsonServiceClient client = GetServiceStackClient();

        var request = new CurrencyCalendarsRequest
        {
            Currencies = currencies
        };
        return client.PostAsync(request);
    }

现在我正在以

的身份登录视图模型
 LogTo.Information("Getting calendar currencies {SelectedCurrencies}",selectedCurrenciesId.Select(x=>x.Id));
                var items = await repository.GetCurrencyCalendarsAsync(selectedCurrenciesId.Select(x => x.Id));

我想知道是否有可以应用于类的属性,以便自动记录方法和参数。

现在我的记录配置为

 var log =
            new LoggerConfiguration().MinimumLevel.ControlledBy(
                levelSwitch: new LoggingLevelSwitch(LogEventLevel.Debug)).WriteTo.File(@".\logs\serilog.log",outputTemplate: "{Timestamp: yyyy-MM-dd HH:mm:ss.fff} [{Level}] [{SourceContext}] {Message}{NewLine}{Exception}").CreateLogger();

        Serilog.Log.Logger = log;

由于

1 个答案:

答案 0 :(得分:0)

您可以通过将{Method}和{LineNumber}分别添加到输出模板来获取方法名称和行号。

据我所知,没有办法自动记录参数;你需要手动完成这个。