如何使用NLog在Linux上的var / log / my-app-dir中添加日志文件和文件夹

问题描述

我正在尝试通过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)