小编Fer*_*oce的帖子

从路径创建文件,创建子目录(如果不存在)

在我的应用程序的配置中,我有一条路径,例如"logs\updater\updater.log"

启动应用程序,我想创建文件updater.log,创建所有子文件夹(如果它们不存在).

因此,如果明天我的用户将配置中的路径更改为"logs\mypathisbetter\updater.log",我的应用程序将继续工作,将日志写入新文件.

File.Create,FileInfo.Create,Streamwriter.Create或者这样:他们这样做吗?

或者,我之前需要检查文件夹是否存在?

我无法在网上找到这个问题的明确答案.

.net file

10
推荐指数
3
解决办法
1万
查看次数

log4net:运行时不同文件appender上的不同日志

早上好家伙.

我写了一个单一的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中浏览了很多线程,但我找不到解决方案.

有人能指出我正确的方向吗?

提前致谢.

c# logging log4net multithreading

9
推荐指数
1
解决办法
1万
查看次数

对于 C# 应用程序的小型远程调试器作为 Visual Studio 的替代方案,我有哪些选择?

只是一个简单的(也许是愚蠢的)问题:在我进行远程协助(我使用 VNC 或 TeamViewer)时,是否有一个简单的小型调试器工具可以使用?

我的 C# 应用程序已部署到我所在国家/地区的数千个客户,有时会出现一些我无法简单回复的错误。如果有一个简单的调试器,我会用它来测试特定的安装和环境,我可能会在几分钟内找到问题。

.net c# debugging remote-debugging

5
推荐指数
1
解决办法
1425
查看次数

Dapper:从对象类型创建表

早上好.

我试图找出如何从对象类型创建一个空表.类型很简单(只有原始类型属性); 有什么东西可以使用吗?我是否需要使用一些属性反射来编写自己的"CREATE TABLE"查询?

我正在开发一个项目,该项目从FirebirdSQL数据库读取数据,并使用Dapper在Sqlite数据库中写入一些表.

任何建议表示赞赏.

谢谢!

c# dapper

4
推荐指数
1
解决办法
9861
查看次数

FileInfo 锁定文件!

想象一个 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 锁定文件!这可能吗?

有人可以建议一种方法来绕过这个问题吗?

谢谢你,南多

.net locking fileinfo

3
推荐指数
1
解决办法
8968
查看次数