Python - 如何断开与日志文件的连接

时间:2017-06-21 07:21:06

标签: python logging disconnect

亲爱的,

我遇到了Python的一个问题:我正在创建一个日志文件但是一旦我运行我的程序,python和我的日志文件之间仍然存在一个链接:这意味着我无法删除日志文件,下一条日志消息将会即使我想将它们发送到其他地方,也要发送到此日志文件。

我的解决方法是关闭内核并重新启动,但我想编程而不是手动执行。您能否提一些建议?

我的代码:

import logging

#initialize the log settings
logging.basicConfig(filename='address.log',level=logging.INFO)

3 个答案:

答案 0 :(得分:0)

使用后需要关闭FileHandler。请参阅相关文章python does not release filehandles to logfile

答案 1 :(得分:0)

简单使用:

Future<void> copyDatabaseFileFromAssets() async {
  // Search and create db file destination folder if not exist
  final documentsDirectory = await getApplicationDocumentsDirectory();
  final objectBoxDirectory = Directory(documentsDirectory.path + '/objectbox/');
  
  if (!objectBoxDirectory.existsSync()) {
    await objectBoxDirectory.create(recursive: true);
  }

  final dbFile = File(objectBoxDirectory.path + '/data.mdb');
  if (!dbFile.existsSync()) {
    // Get pre-populated db file.
    ByteData data = await rootBundle.load("assets/databases/data.mdb");

    // Copying source data into destination file.
    await dbFile.writeAsBytes(data.buffer.asUint8List());
  }
}

答案 2 :(得分:0)

我们可以这样做:

log = logging.getLogger()
for hdle in log.handlers[:]:
    if isinstance(hdle,logging.FileHandler): 
        hdle.close()
        log.removeHandler(hdle)

我试过 logging.shutdown() 但这并不总是有效。 您可能还想访问 this thread 以获取更多说明。