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

公共(public)类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文件吗?还是我的路径错误?

最佳答案

回答有关语法的特定问题。 \home\Logs\应该是/home/Logs/,因为Linux使用正斜杠作为路径分隔符。

您的程序有可能无法访问/home/目录。我亲自尝试了类似的程序,并在日志目录创建步骤中遇到了System.UnauthorizedAccessException

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

关于linux - 在Linux中为.net Core(Docker)写txt文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61789419/

10-14 14:20
查看更多