我正在尝试使用Azure功能中标准Tracewriter
以外的其他记录器。大多数情况下,NLog在运行Azure功能时都在本地工作,但是在我部署到Azure之后什么也没写。
通过blob加载配置。我将配置文件存储在存储Blob中,并将其作为参数加载
[FunctionName("Update")]
public static IActionResult Run([HttpTrigger(AuthorizationLevel.Function, "put", Route = null)]HttpRequest req,
[Blob("nlog/nlog.config", FileAccess.Read)] string inputBlob)
Logger.LoadConfiguration(inputBlob);
Logger.Info("This does not show in Azure");
...
我在其中加载配置的logger类
public class Logger
{
public static Logger Log = LogManager.GetCurrentClassLogger();
private static bool _isConfigrued;
public static void LoadConfiguration(string xmlString)
{
if (string.IsNullOrEmpty(xmlString))
return;
if (!_isConfigrued)
{
StringReader sr = new StringReader(xmlString);
XmlReader xr = XmlReader.Create(sr);
LogManager.Configuration = new XmlLoggingConfiguration(xr, null);
Log = LogManager.GetCurrentClassLogger();
_isConfigrued = true;
}
}
}
然后我将NLog配置为写入跟踪
<targets>
<target name='console' type='Console' layout='Console ${message}' />
<target name="trace" xsi:type="Trace" layout="Trace ${message}" />
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="trace" />
<logger name="*" minlevel="Trace" writeTo="console" />
</rules>
但是没有任何内容写入跟踪/控制台
我也尝试像这里建议的那样加载配置
https://blogs.msdn.microsoft.com/waws/2017/03/16/nlog-and-database/
也没有运气
我也尝试过Microsoft.Extentions.Loggin.Ilogger
,它在本地工作,但没有在Azure上打印任何内容。
公正和空的控制台窗口不会引发任何异常。
答案 0 :(得分:0)
在Azure版本上运行时。 1,然后可以将NLog输出转发到TextWriter记录器:
在Azure版本上运行时。 2,然后可以将NLog输出转发到Microsoft ILogger:
另请参阅:https://docs.microsoft.com/en-us/azure/azure-functions/functions-dotnet-class-library
如果需要部署nlog.config,则可能必须将其包含在Azure函数的“应用程序设置”中。另请参见https://stackoverflow.com/a/47332193