我有Logger.cs
一个类,我正在初始化 serilog 设置,如下所示:
_logger = new LoggerConfiguration()
.ReadFrom.AppSettings()
.MinimumLevel.Debug()
.WriteTo.File(_filepath, restrictedToMinimumLevel: LogEventLevel.Debug, shared: true, rollOnFileSizeLimit: true)
.CreateLogger();
Run Code Online (Sandbox Code Playgroud)
我想从 app.config 文件中读取文件的大小。我有如下的 app.config 文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="serilog:using:File" value="Serilog.Sinks.File" />
<add key="serilog:write-to:File.fileSizeLimitBytes" value="2000" />
</appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
但看起来appsettings
根本就没有读过。因为我可以看到生成了超过 2kb 的文件。我在这里错过了什么?
我的记录器类将如何从文件中读取app.config
,我是否错过了 assemblyinfo 类中的任何设置?
我有一个配置了 serilog 进行日志记录的应用程序。我的应用程序中有一个复选框,只有单击该复选框按钮时,它才应记录所有信息日志,否则仅应记录错误和警告日志。
在调试模式下,当未选中按钮时,如何仅记录调试、错误和警告日志。两天以来我一直在尝试这样做。.MinimumLevel.Debug()
我已经尝试了 google/stackoverflow 使用/中建议的所有方法,restrictedToMinimumLevel: LogEventLevel.Debug
但它对我不起作用。它还记录信息日志。
请帮我解决这个问题。仅记录调试、错误和警告日志。
val
当复选框启用时为真:
if (val == "true")
{
_logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.File(_filepath, restrictedToMinimumLevel: LogEventLevel.Information)
.CreateLogger();
}
else if (val == "false")
{
_logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.File(_filepath, restrictedToMinimumLevel: LogEventLevel.Debug)
.CreateLogger();
}
Run Code Online (Sandbox Code Playgroud)
当val
为 false 时,即当未启用复选框时,它应该仅记录调试、错误和警告日志。
我有一个 Logger.cs 类:
public Logger(string logtype=null)
{
_logtype = logtype;
LogEventLevel level = LogEventLevel.Warning;
if (File.Exists(configPath))
{
XDocument xdoc = XDocument.Load(configPath);
string val = xdoc.Descendants("logEnabled").First().Value;
// if(clientConfig.LogEnabled == true)
if (val == "true")
{
level = LogEventLevel.Debug;
}
else if (val == "false")
{
level = LogEventLevel.Warning;
}
}
else
{
level = LogEventLevel.Warning;
}
_logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.File(_filepath, level)
.CreateLogger();
}
Run Code Online (Sandbox Code Playgroud)
此记录器类用于解决方案中的多个项目。如下图所示:
Class A {
Logger _logger = new Logger("A");
}
Class A1 {
Logger _logger = …
Run Code Online (Sandbox Code Playgroud) 我有以下班级结构。类 A 从类 B 和 C 的构造函数中调用。
Class A
{
A()
}
Class B
{
B()
{
A();
}
}
Class C
{
C()
{
A();
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法知道对 A() 的调用是来自 B() 还是 C()?我不想在构造函数中传递任何对象。