我是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/