标签: filehandler

Clickonce应用程序和文件处理程序行为

我有一个clickonce应用程序,我为这个应用程序设置了几个文件处理程序(为了这个例子,我想处理带有.aaa.bbb扩展的文件).

如果我选择一个带有这些扩展名的文件,我的应用程序会按预期启动,一切都很好.但是,如果我选择多个文件并打开它们(通过点击Enter或右键单击并选择" 打开"),则会启动多个我的同步实例 - 每个文件被选中一个实例.

这不是我期望的行为,我只希望一个实例以多个文件条目开头AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData.这可以实现,还是我的期望不正确?

编辑:
只是详细说明:我们已经遵循了@Matthias提到的单实例方法,第一个启动实例创建了一个命名服务器管道.然后,后续实例启动,检测到它们是辅助实例,通过命名管道将其命令行参数(filename)传递给主实例,然后退出.主实例通过命名管道接收文件名,并执行其操作(启动文件导入向导).

当用户选择多个文件(即5个文件),然后选择在应用程序中打开这些文件时,就会出现问题.我没有从命令行提供的5个文件名开始一个辅助实例,而是启动了5个应用程序启动的辅助实例,每个实例在命令行上都有一个文件名.然后,每个都创建一个名为pipe的客户端,并将该文件名传递给主实例 - 因此名为pipe的服务器接收5个单独的消息.

跟进想法:
在聊聊之后,我发现这可能只是注册文件处理程序的工作方式,也许它与clickonce无关.也许解决方案是服务器命名管道在收到每条消息后暂停,并在操作之前尝试排队消息?

c# clickonce filehandler

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

如何使用python的TimedRotatingFileHandler强制旋转名称?

我正在尝试使用TimedRotatingFileHandler将每日日志保存在单独的日志文件中.旋转按预期完美地工作,但我不喜欢它的工作方式是命名文件.

如果我将日志文件设置为my_log_file.log,这将是"今天"的日志文件,当它在午夜更改时,它将被重命名为最后my_log_file.log.2014-07-08没有.log扩展名,并且my_log_file.log将为该文件创建一个新文件.新的一天.

我想得到的是旧文件被重命名my_log_file.2014-07-08.log甚至my_log_file-2014-07-08.log,主要是最后的.log,而不是中间.此外,我希望"今天"的日志文件已经以今天的日期命名,就像旧日期一样.

有没有办法这样做?

我发现我可以用以下内容个性化后缀:

handler.suffix ="%Y-%m-%d"

但我没有办法删除内部.log部分并强制当前日志文件添加后缀.

python logging filehandler

4
推荐指数
2
解决办法
4482
查看次数

java.io.IOException:无法获得锁定

得到错误为

“ java.io.IOException:无法获取.. \ log \ abc.log的锁”,不确定为什么会发生这种情况。

有人可以帮我吗?谢谢

        logger = LogManager.getLogManager().getLogger(className);
        FileHandler logFile = new FileHandler(file);

        // create txt Formatter
        SimpleFormatter formatterTxt = new SimpleFormatter();
        logFile.setFormatter(formatterTxt);         
        logger.addHandler(logFile);
Run Code Online (Sandbox Code Playgroud)

java filehandler

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

为什么TimedRotatingFileHandler无法正常工作以及如何在日志行中解决此问题(轮换正在工作,但缺少日志行)

更新: TimedRotatingFileHandler我使用时工作不正常multiprocessing,我应该如何处理多处理日志?

我编写了自己的Logger类,如下所示,将其用作所有其他python脚本中的模块.

import logging
import logging.handlers

class Logger:
    DEFAULT_LOG_OUTPUT = "/home/haifzhan/"

    def __init__(self, logger_name, log_file_name, log_dir=DEFAULT_LOG_OUTPUT, log_level=logging.DEBUG):
        self.logger = logging.getLogger(logger_name,)
        self.formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')

        #self.file_handler = logging.FileHandler(log_dir + log_file_name)
        file_path = log_dir + log_file_name
        self.file_handler = logging.handlers.TimedRotatingFileHandler(file_path, when='H', backupCount=30)
        self.file_handler.setFormatter(self.formatter)
        self.logger.setLevel(log_level)
        self.logger.addHandler(self.file_handler)

        self.console_handler = logging.StreamHandler()
        self.console_handler.setFormatter(self.formatter)
        self.console_handler.setLevel(logging.DEBUG)
        self.logger.addHandler(self.console_handler)

    def get_logger(self):
        return self.logger
Run Code Online (Sandbox Code Playgroud)

在我的python脚本的顶部,我创建了一个Logger实例.

 `logger = Logger("logger name", "logfile.log", log_dir=LOG_DIR, log_level=logging.INFO).get_logger()`  # always put it at the top of my script
Run Code Online (Sandbox Code Playgroud)

它在我使用时工作得很好FileHandler,不幸的是它在我切换后省略了记录行TimedRotatingFileHandler …

python logging filehandler python-2.7

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

带有 RotatingFileHandler 的 Python 3 记录器超出 maxBytes 限制

我使用以下代码来限制日志文件的大小(最小示例):

import logging
from logging.handlers import RotatingFileHandler

# Set up logfile and message logging.
logger = logging.getLogger("Logger")
logger.setLevel(logging.ERROR)
# Create the rotating file handler. Limit the size to 1000000Bytes ~ 1MB .
handler = RotatingFileHandler("test.log", mode='a', maxBytes=1000000, encoding=None, delay=0)
handler.setLevel(logging.ERROR)
# Create a formatter.
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# Add handler and formatter.
handler.setFormatter(formatter)
logger.addHandler(handler)

for l in range(1000):
    logger.error("test" * 1000)
Run Code Online (Sandbox Code Playgroud)

但是文件大小超出了 1MB 的限制并继续记录。我不明白我做错了什么。有没有办法选择不同的参数来正确限制日志文件的大小?

python logging filesize limit filehandler

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

如何确定两个句柄是否引用同一个文件

我想检查两个文件句柄是否引用同一个文件。为此,我可以使用stat应用于每个文件句柄的功能吗?提前致谢

my $file = 'C:\temp\file.txt');
open( TXT1, "> $file" );
open( TXT2, "> $file" );
print( "The handles refer to the same file!") if (\TXT1 eq \TXT2);
Run Code Online (Sandbox Code Playgroud)

perl handler stat filehandler

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

Perl基于命令行参数设置文件句柄

我想读取默认输入,如果数据是通过管道输入或提供了文件,但如果没有给出任何内容,我想提供while(<>)执行的默认值.

伪代码:

if(!<>){
  <> = system("ls | ./example.pl");
}

while(<>){
...
...
...
}
Run Code Online (Sandbox Code Playgroud)

unix perl command-line stdin filehandler

2
推荐指数
1
解决办法
237
查看次数

如何通过FileHandler为Logger文件创建目录

我正在尝试在每天创建目录的目录中创建日志,但是fileHandler没有创建目录,而是其抛出异常无法获取C:\ dir_date \ Logging.txt的锁(此处dir_date不存在,我正在尝试创建登录到该目录)。我可以通过“ fileHandler”创建目录吗?

FileHandler fileTxt;
fileTxt = new FileHandler("C:\\ff\\Logging.txt");
Run Code Online (Sandbox Code Playgroud)

log4J甚至可以创建目录(如果不存在),这是否可以通过fileHandler进行?

java logging filehandler

2
推荐指数
1
解决办法
1993
查看次数

配置Python的logging.FileHandler的正确方法是什么?

我编写了一个小型 Python 脚本,用于处理夜间转换和音频数据归档。由于在此过程中出现了一些意想不到的问题(文件不存在、与数据库服务器的连接不可靠等等...),我添加了 Python 自己的日志记录工具来跟踪遇到的任何问题。

问题是,日志文件是在脚本运行的任何地方创建的(例如当前工作目录),所以我有两个日志文件,一个在我的主目录中(由 cron 运行脚本时使用),另一个在脚本自己的目录中目录(调试时使用)。我更喜欢将日志文件和配置文件保存在与脚本相同的目录中。

我在这里加载记录器的配置:

logging.config.fileConfig(os.path.join(sys.path[0], 'logger.conf'))
Run Code Online (Sandbox Code Playgroud)

...这是我的相关部分logger.conf

[handler_fileHandler]
class=FileHandler
level=DEBUG
formatter=fileFormatter
args=('echi_export.log', 'a',)
Run Code Online (Sandbox Code Playgroud)

绝对路径确实有效,但我有点不愿意使用它们。

简而言之,使用 Pythonlogger模块(尤其是 FileHandler)配置文件日志记录的正确方法是什么?一些现实世界的例子就足够了。

python logging filehandler

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