首页 > 解决方案 > 在linux中为.net Core(Docker)编写txt文件

问题描述

我是 Linux 新手,我的 API 是在 .net 核心中创建并在 Docker 中运行的。我创建的系统将写入/创建一个 txt 文件,该文件将输入 API 中记录的所有错误。我要写的代码是这样的

`公共类WriteLogs {

    public void ErrorLogFile(string traceNo, string errorMsg)
    {
        DirectoryInfo dir = new DirectoryInfo(Startup.errorPath);
        if (!dir.Exists)
        {
            dir.Create();
        }

        using (StreamWriter swLog = File.AppendText(Startup.errorPath + Startup.errorFileName + DateTime.Now.ToString("MMddyyyy") + ".txt"))
        {
            swLog.WriteLine(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss.fff") + " - Trace Number : " + traceNo + "   " + errorMsg + "\n");
        }
    }
}`

我启动时的值位于我的 appSettings.json 文件中:

"ErrorPath": "C:\\BP\\", "ErrorFileName": "BP-ParamLogs_",

这在 Windows 环境中工作,但是当我将程序转移到 linux 并将 ErrorPath 更改为:

"ErrorPath": "/home/Logs/",

该文件未创建。

我的问题是,我的语法在 linux 中是否可以编写 txt 文件或者我的路径错误?

标签: linuxdockerasp.net-corerhelstreamwriter

解决方案


回答您关于语法的具体问题。\home\Logs\应该是/home/Logs/因为 Linux 使用正斜杠作为路径分隔符。

您的程序可能没有对该/home/目录的写入权限。我个人尝试过一个类似的程序,并且System.UnauthorizedAccessException在创建日志目录的步骤中遇到了。

尝试从终端运行您的程序dotnet run以查看您可能遇到的异常。如果您也System.UnauthorizedAccessException遇到了,则以 root 身份运行sudo dotnet run


推荐阅读