【发布时间】:2020-03-22 18:03:02
【问题描述】:
我正在尝试使用 NLog 将我的日志记录到 ApplicationInsights & Az 表中。由于我有很多区域,并且我不想将检测密钥保留在配置文件中,因此我正在使用以下方法在 .NET 4.7.1 中编写一个库项目。
public void AddTelemetryTarget()
{
try
{
InternalLogger.LogToConsole = true;
// enable internal logging to a file
InternalLogger.LogToConsoleError = true;
// enable internal logging to a custom TextWriter
TextWriter writer = File.CreateText(@"D:\My Files\PayloadLog.txt");
InternalLogger.LogWriter = writer; //e.g. TextWriter writer = File.CreateText("C:\\perl.txt")
// set internal log level
InternalLogger.LogLevel = NLog.LogLevel.Trace;
LogManager.ThrowExceptions = true;
var config = new LoggingConfiguration();
//Registering Nlog target with application insight
ConfigurationItemFactory.Default.Targets.RegisterDefinition("ApplicationInsightsTarget", typeof(ApplicationInsightsTarget));
ApplicationInsightsTarget aiTarget = new ApplicationInsightsTarget();
aiTarget.InstrumentationKey = "instrumentationKey";
aiTarget.Name = "ai";
var wrapper = new AsyncTargetWrapper(aiTarget, 5000, AsyncTargetWrapperOverflowAction.Grow);
config.AddTarget("TelemetryAsyncWrapper", wrapper);
//Applying logging rules.
LoggingRule rule = new LoggingRule("*", ConvertLogType(LogLevel.Info), aiTarget);
config.LoggingRules.Add(rule);
LogFactory logFactory = new LogFactory(config);
NLog.Logger _logger = logFactory.GetCurrentClassLogger();
LogEventInfo logEventInfo = new LogEventInfo();
logEventInfo.Level = NLog.LogLevel.Info;
logEventInfo.Properties.Add("ModuleName", "TestModule");
logEventInfo.Properties.Add("MethodName", "TestMethod");
_logger.Info(logEventInfo);
logEventInfo = new LogEventInfo();
logEventInfo.Level = NLog.LogLevel.Error;
logEventInfo.Properties.Add("ModuleName", "ExceptioModule");
logEventInfo.Properties.Add("MethodName", "ExceptionMethod");
_logger.Error(logEventInfo);
}
catch (Exception ex)
{
throw;
}
}
但在 Application Insights 中找不到日志。
我已经添加了上面的 Nuget 包。我错过了什么吗?
内部日志也没有错误
【问题讨论】:
-
你应该使用这个 nuget-package 来写入表存储:nuget.org/packages/NLog.Extensions.AzureCosmosTable 另见github.com/JDetmar/…