问题描述
我正在尝试通过NLog将日志记录添加到.NET核心中的WebAPI,但是似乎无法让Linux让我将日志文件写入var/log/my-app
。除了SysLog的扩展名之外,我找不到任何文档,但这不符合我的需求。目标是定义一个以应用程序命名的文件夹,并在其中存储内部文件,所有文件和自己的文件,如下所示:
var
|-- log
|-- my-app
|-- internal.txt
|-- nlog-all.log
|-- nlog-own.log
我可能会缺少文档或其他内容,但是除了通过SysLog写入系统日志外,我还没有找到更多指定方法。在像Ubuntu这样的Linux环境中,如何使用NLog做到这一点?
解决方法
NLog InternalLogger主要用于诊断和故障排除,因此,为了简化操作并减少出错的机会,对日志记录路径进行动态控制的逻辑相当有限。
您现在可以使用以下关键字:
- $ {basedir}
- $ {processdir}
- $ {currentdir}
- $ {tempdir}
- %appdata%
另请参阅:https://github.com/NLog/NLog/wiki/Internal-Logging
在您的情况下,我可能会考虑在部署parse
时执行令牌搜索替换(在部署时搜索XML转换)。
备选地,只需在启动时分配应用程序名称,如下所示:
assign
使用此NLog.config:
f <- function(x) 2 * x
g <- function(x,y) x * y
h <- function(x,y,z) x * y + z
fns <- c("f","g","h")
for (fn in fns) {
for (variable in formalArgs(fn)) {
function_name <- glue::glue("{toupper(fn)}.{variable}")
fn_definition <- eval(parse(text = glue::glue("function({paste0(formalArgs(fn),collapse = ',')}) eval(D(as.expression(body({fn})),'{variable}'))")))
assign(
function_name,fn_definition
)
}
}
ls.str(mode = "function")
#> f : function (x)
#> F.x : function (x)
#> fn_definition : function (x,z)
#> g : function (x,y)
#> G.x : function (x,y)
#> G.y : function (x,y)
#> h : function (x,z)
#> H.x : function (x,z)
#> H.y : function (x,z)
#> H.z : function (x,z)