linux - 在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 文件或者我的路径错误?
解决方案
回答您关于语法的具体问题。\home\Logs\
应该是/home/Logs/
因为 Linux 使用正斜杠作为路径分隔符。
您的程序可能没有对该/home/
目录的写入权限。我个人尝试过一个类似的程序,并且System.UnauthorizedAccessException
在创建日志目录的步骤中遇到了。
尝试从终端运行您的程序dotnet run
以查看您可能遇到的异常。如果您也System.UnauthorizedAccessException
遇到了,则以 root 身份运行sudo dotnet run
推荐阅读
- python - 从字符串中提取姓名和号码
- javascript - 名为“[DEFAULT]”的 Firebase 应用程序已存在 REACT
- directx - 使用 D2D 渲染文本
- node.js - promise.then 在异步 lambda 处理程序中不起作用
- docker - python + mysql - 通过 docker-compose 创建
- java - 找不到局部变量,这是一个公共类
- python - 从列表中的元素中获取最常用的单词
- solr - 如何修复无法创建核心 [博客] 原因:solr.SortableIntField
- java - Spring Boot @StepScope 错误'不能子类化最终类 java.lang.String'
- python - 在 Python 中使用 Plotly 进行 QQ 绘图