- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个与 WCF 服务捆绑在一起的桌面应用程序。两者都是使用 .NET 4.7.2 构建的。应用程序和服务彼此共享一个安装目录,并且它们都使用 NLog 4.5.8 进行日志记录。它们各自使用 NLog 的方式的唯一区别是应用程序使用 NLog.config 文件来设置其日志记录属性,而服务使用 NLog Configuration API .
请注意,我为该服务使用 NLog 配置 API 的原因是因为该服务似乎拒绝使用应用程序使用的 NLog.config 文件,即使它与它们两个位于同一目录中。它根本不会记录,除非我使用 NLog 配置 API 对其进行配置。
无论如何,NLog 配置 API 似乎一切正常;但是,我无法像使用 NLog.config 文件时那样将其定位到用于日志文件存储的 ApplicationData 文件夹。
在NLog.config文件中,ApplicationData文件夹可以定位如下:
<target xsi:type="File"
name="infoLogFile"
layout="${longdate}|${level:uppercase=true}|${callsite}|${logger:shortName=true}: ${message}"
fileName="${specialfolder:ApplicationData}\Program\file.log"
keepFileOpen="false"
archiveFileName="${specialfolder:ApplicationData}\Program\file_${shortdate}.{##}.log"
archiveNumbering="Sequence"
archiveEvery="Day"
maxArchiveFiles="30"
/>
我已经使用 NLog 配置 API 设置了我的 FileTarget,如下所示:
var infoFileTarget = new FileTarget("infoFileTarget")
{
Layout = @"${longdate}|${level:uppercase=true}|${callsite}|${logger:shortName=true}: ${message}",
FileName = "${specialfolder:ApplicationData}/Program/file.log",
KeepFileOpen = false,
ArchiveFileName = "${specialfolder:ApplicationData}/Program/file_${shortdate}.{##}.log",
ArchiveNumbering = ArchiveNumberingMode.Sequence,
ArchiveEvery = FileArchivePeriod.Day,
MaxArchiveFiles = 30,
};
config.AddTarget(infoFileTarget);
不幸的是,这不起作用。
但是,将 FileName/ArchiveFileName 设置为以下两个都有效:
FileName = "${basedir}/Program/file.log", // this works
或
FileName = "C:/Users/<USERNAME>/AppData/Roaming/Program/file.log, // this works
似乎以 ApplicationData 文件夹为目标应该可行,但我一定遗漏了一些东西。有使用 NLog 经验的人知道我如何让它工作吗?
在此先感谢您的帮助!
最佳答案
如果你认为${specialfolder:ApplicationData}
(或其他布局)不起作用,您可以将其记录到文件中。例如
<target xsi:type="File"
name="infoLogFile"
layout="${longdate}|my application data folder: ${specialfolder:ApplicationData}"
fileName="c:\temp\test.log"
/>
我认为 C:/Users/<USERNAME>/AppData/Roaming/Program/file.log
中的用户名可能出乎意料。
边注:
${specialfolder}
在完整的 .NET 框架和 .NET Standard 2 中受支持,而不是 .NET standard 1。NLog 使用 Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
检索文件夹。
关于c# - 使用 NLog 配置 API 写入 ApplicationData 文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51750682/
我正在使用 MS EnterpriseLibrary.Logging,它运行良好,但日志文件位于程序可执行目录中。 我如何才能将我的日志文件放在单个用户的 applicationData 文件夹中?
我正在尝试获取当前登录用户的应用程序数据文件夹的路径。 我正在使用 Environment.GetFolderPath(Environment.SpecialFolder.ApplicationDat
从这篇博文看来,我应该能够将 DateTime 存储为 ApplicationData.LocalSettings 值,但我在下面得到了这一行的异常. ApplicationData.Current.
我有一个空白的 UWP 应用程序,我在 ApplicationData 中写了一些设置,当我增加我的包版本时,我的 applicationData 版本没有改变。另一个问题是,当我使用 SetVers
以下链接解释了允许在设备之间漫游的最大数据大小,并且一旦超过 100KB 限制,所有漫游功能将停止。 https://msdn.microsoft.com/en-us/library/windows/
在我的应用程序中,我将所有数据存储在 ApplicationData 中,以便它可以在 Activity 之间轻松共享。我的理解是,这些数据应该在应用程序从最初的 onCreate 到最后的 onDe
我正在尝试关注 UWP with Desktop Extension – Part 2 UWP 和 WinForms 桌面桥调用进程和传递参数。此示例控制台 Program.cs代码包括参数字符串:
我有一个奇怪的问题:我的 .NET 4.0 WPF 应用程序正在将数据保存到 ApplicationData 文件夹。 Environment.GetFolderPath(Environment.S
事实证明,当您尝试存储枚举值时,WinRT 保存设置的能力会引发异常。 MSDN 在页面上说 "Accessing app data with the Windows Runtime"只有"Runti
总结:几个不同的用户将在特定机器上使用我的应用程序。我希望应用程序将其数据存储在这台机器上的单个公共(public)文件中,而不管哪个用户正在运行该应用程序。 为了实现我想要的,我想知道这个问题是否相
我有一个带有表单和文本字段的 Tab GUI 扩展。我想将表单字段的值保存到 ApplicatioData。我正在考虑调用 Anguilla 方法的“更新”按钮。 有安圭拉方法可以做到这一点吗?我在安
在我的系统上,%AppData%导致 ApplicationData这是 C:\Users\\AppData\Roaming 但是还有C:\Users\\AppData\Local 还有一些困惑D:\
有谁知道,我必须在 Unity 项目目录结构中放置一个文件(sqlite 文件),以便在 apk 编译和安装后,该文件仍然存储在 Android 端的 persistedDataPath 中? 提前致
我有一个与 WCF 服务捆绑在一起的桌面应用程序。两者都是使用 .NET 4.7.2 构建的。应用程序和服务彼此共享一个安装目录,并且它们都使用 NLog 4.5.8 进行日志记录。它们各自使用 NL
我在我的一位客户的计算机上遇到了一个非常奇怪的行为,我找不到任何线索来解释为什么会这样:当应用程序调用 Environment.GetFolderPath(Environment.SpecialFol
我的 C++ 代码,属于 Media Foundation Transform 的一部分倾向于能够在 Windows Store App (Metro) 中运行 我修改了 C++ GrayscaleT
我正在尝试将文件存储到 Windows Phone 8.1 应用程序的应用程序存储中,但它总是失败并出现系统。UnauthorizedAccessException。 异常发生在下面一行(之前没有相关
我需要将一个文件安装到 Environment.SpecialFolder.ApplicationData 文件夹中,该文件夹在 XP 和 Vista 之间有所不同。是否有内置方法可以引用 WiX 中
我有一个 asp.net mvc3 应用程序。现在我想将用户数据保存在 C:\Users{AppPoolUserAccount}\AppData\Roaming\MyProgramm... 在第一次调
在我的应用程序运行期间,我将 txt 文件中的一些数据保存到以下位置:Windows.Storage.ApplicationData.Current.LocalFolder在 Windows 10 P
我是一名优秀的程序员,十分优秀!