我是Linux的新手,我的API是在.net core中创建的,并在Docker中运行。我创建的系统将编写/创建一个txt文件,该文件将输入API中记录的所有错误。我编写的代码如下
public class 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");
}
}
}
字符串
我的startup中的值位于我的appSettings.json文件中:
"ErrorPath": "C:\\BP\\", "ErrorFileName": "BP-ParamLogs_",
型
这是在Windows环境下工作,但当我将我的程序转移到Linux并将ErrorPath更改为:
"ErrorPath": "/home/Logs/",
型
文件没有创建。
我的问题是,我的语法在Linux中是否可以写txt文件,或者我的路径是错误的?
2条答案
按热度按时间7vux5j2d1#
要回答有关语法的具体问题,.
\home\Logs\
应该是/home/Logs/
,因为Linux使用正斜杠作为路径分隔符。你的程序可能没有
/home/
目录的写权限,我个人试过一个类似的程序,在创建日志目录的时候遇到了System.UnauthorizedAccessException
。尝试使用
dotnet run
从终端运行程序,以查看可能出现的异常。ubof19bj2#
我只是通过使用命令解决了这个问题:
第一个月
从第一个目录。执行它后。它在docker目录中。