在linux中为.net内核编写txt文件(Docker)
我是Linux新手,我的API是在.NETCore中创建的,在Docker中运行。我创建的系统将写入/创建一个txt文件,该文件将输入API中记录的所有错误。我要写的代码是 `公共类写日志 { 我的启动中的值位于我的appSettings.json文件中:在linux中为.net内核编写txt文件(Docker),linux,docker,asp.net-core,rhel,streamwriter,Linux,Docker,Asp.net Core,Rhel,Streamwriter,我是Linux新手,我的API是在.NETCore中创建的,在Docker中运行。我创建的系统将写入/创建一个txt文件,该文件将输入API中记录的所有错误。我要写的代码是 `公共类写日志 { 我的启动中的值位于我的appSettings.json文件中: “错误路径”:“C:\\BP\\”, “ErrorFileName”:“BP-ParamLogs”, 这在windows环境下工作,但当我将程序转移到linux并将ErrorPath更改为: “错误路径”:“/home/Logs/”, 未创建
“错误路径”:“C:\\BP\\”,
“ErrorFileName”:“BP-ParamLogs”,
这在windows环境下工作,但当我将程序转移到linux并将ErrorPath更改为:
“错误路径”:“/home/Logs/”,
未创建该文件
我的问题是,我的语法在linux中是否可以用来写txt文件,或者我的路径是错误的?来回答关于语法的特定问题。
\home\Logs\
应该是/home/Logs/
,因为linux使用正斜杠作为路径分隔符
您的程序可能没有对/home/
目录的写访问权限。我曾亲自尝试过类似的程序,但在日志目录创建步骤中遇到了系统。UnauthorizedAccessException
请尝试使用
dotnet run
从终端运行您的程序,以查看您可能遇到的异常。如果您也在系统中运行。UnauthorizedAccessException
,然后使用sudo dotnet run
以root用户身份运行。我刚刚使用命令解决了问题:
find.-name BP Param*
从第一个目录。执行后,它位于docker目录中。打开斜杠(
“ErrorPath”:“/home/Logs/”
)另外,还要检查您是否具有对/home/Logs/
的写入权限错误消息是什么?将代码包装在try catch
-块中以获取错误消息可能会有所帮助。我假设您必须引用路径,如/home/Logs/
嗨,Daniel,没有显示错误,只是它没有创建lo服务器中的gs试图写入/home/Logs/
的路径,但无效。先生,如果我的程序是API并在docker中运行,我如何使用dotnet run?
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");
}
}
}`