在我的应用程序的配置中,我有一条路径,例如"logs\updater\updater.log"
启动应用程序,我想创建文件updater.log,创建所有子文件夹(如果它们不存在).
因此,如果明天我的用户将配置中的路径更改为"logs\mypathisbetter\updater.log",我的应用程序将继续工作,将日志写入新文件.
File.Create,FileInfo.Create,Streamwriter.Create或者这样:他们这样做吗?
或者,我之前需要检查文件夹是否存在?
我无法在网上找到这个问题的明确答案.
早上好家伙.
我写了一个单一的C#2.0应用程序(称之为myapp).
Myapp被多次调用,并且在每次调用时都会生成一种将在分离的线程中执行的"任务".
如果您在短时间内多次调用myapp,则任务将并行执行.
通常我使用log4net进行日志记录; 我配置它XmlConfigurator.Configure(<config>.xml)在启动时加载一个xml文件,然后我LogManager.GetLogger(name)在每个需要记录器的类中使用static ,非常简单.
相反,这种情况具有挑战性.我需要做的是:根据每次调用收到的args之一(称之为arg),我需要获得一个不同的RollingFileAppender,它记录在不同的文件中,例如.log.
举个例子:
第一次调用:myapp.exe -arg:01
- myapp创建thread1
- 将一个新的RollingFileAppender设置为01.log文件,如果不存在
- 该线程中使用的对象必须登录01.log文件
第二次调用:myapp.exe -arg:02
- 创建thread2
- 将一个新的RollingFileAppender设置为02.log文件,如果不存在
- 该线程中使用的对象必须登录02.log文件,但不能登录到log.01
第3次调用:myapp.exe -arg:01
- 创建thread03
- 将RollingFileAppender获取到01.log文件(它已经存在!)
- 此线程中使用的对象必须登录01.log文件,但不能登录到log.02
等等.我不需要将RollingAppender的配置保留在xml文件中,我可以通过编程方式创建它; 我的想法是使用一个静态包装器类,称之为LogHelper,如果基于arg不存在则创建appender ,并且当对象需要时(在类中我会使用类似的东西ILog log = LogHelper.GetLogger(name, arg)调度正确的ILog,以获取记录器使用而不是默认的log4net方法LogManager.GetLogger(name)).因此,如果我在2个不同的线程中有2个相同类的istances,当我记录每个文件的消息时,取决于或者arg(如果需要,我将在每个对象中注入arg).
我在StackOverflow中浏览了很多线程,但我找不到解决方案.
有人能指出我正确的方向吗?
提前致谢.
只是一个简单的(也许是愚蠢的)问题:在我进行远程协助(我使用 VNC 或 TeamViewer)时,是否有一个简单的小型调试器工具可以使用?
我的 C# 应用程序已部署到我所在国家/地区的数千个客户,有时会出现一些我无法简单回复的错误。如果有一个简单的调试器,我会用它来测试特定的安装和环境,我可能会在几分钟内找到问题。
早上好.
我试图找出如何从对象类型创建一个空表.类型很简单(只有原始类型属性); 有什么东西可以使用吗?我是否需要使用一些属性反射来编写自己的"CREATE TABLE"查询?
我正在开发一个项目,该项目从FirebirdSQL数据库读取数据,并使用Dapper在Sqlite数据库中写入一些表.
任何建议表示赞赏.
谢谢!
想象一个 winform 应用程序,它将更新的程序集从源文件夹 A 复制到目标文件夹 B。我使用简单的 DirectoryInfo.GetFiles 方法来填充列表视图,比较文件夹 A 和 B 中程序集的版本;如果某些程序集较新,我将启动更新方法。在这种方法中,在复制之前,我尝试一下B文件夹中的所有文件是否未被使用:
var B = new DirectoryInfo("myBfolder");
foreach (var file in aFolder.GetFiles())
{
try
{
//File not in use
File.Open(file.FullName, FileMode.Open, FileAccess.ReadWrite, FileShare.None);
}
catch (Exception ex)
{
//File in use!
}
}
Run Code Online (Sandbox Code Playgroud)
好吧,因为之前的 UpdateListView 代码使用 FileInfo 来获取要显示的信息,所以我的所有文件都被使用了!
FileInfo 锁定文件!这可能吗?
有人可以建议一种方法来绕过这个问题吗?
谢谢你,南多