简体   繁体   English

创建该文件后 Heroku 上的 FileNotFoundError

[英]FileNotFoundError on Heroku after creating that file

My app has some additional logging, it works fine on a local machine and even on Heroku local.我的应用程序有一些额外的日志记录,它在本地机器上运行良好,甚至在本地 Heroku 上运行良好。 When I push it to Heroku, it raises a FileNotFoundError .当我将它推送到 Heroku 时,它会引发FileNotFoundError Here is my code:这是我的代码:

class Logger:
    def __init__(self, name, file_handler, formatter, stream_handler):
        if not os.path.exists('Logs'):
            os.makedirs('Logs')

        self.logger = logging.getLogger(name)
        self.logger.setLevel(logging.DEBUG)

        file_handler.setFormatter(formatter)
        self.logger.addHandler(file_handler)

        if stream_handler:
            stream_handler = logging.StreamHandler()
            stream_handler.setFormatter(formatter)
            self.logger.addHandler(stream_handler)


logger_dev = Logger('dev',
                    handlers.TimedRotatingFileHandler(f'Logs/dev.log', when='midnight', backupCount=2),
                    logging.Formatter('%(asctime)s : %(levelname)s : %(filename)s : %(funcName)s : %(message)s'),
                    True)

logger_usr = Logger('usr',
                    handlers.RotatingFileHandler(f'Logs/usr.log', maxBytes=7 * 1024 * 1024, backupCount=2),
                    logging.Formatter('%(asctime)s : %(message)s'),
                    False)

I've also tried explicitly creating .log files by adding this to the Logger class:我还尝试通过将其添加到 Logger class 来显式创建.log文件:

if not os.path.exists(f'Logs/{name}.log'):
    open(f'Logs/{name}.log', 'w+').close()

Here are Heroku logs:以下是 Heroku 日志:

2020-06-15T20:59:43.441969+00:00 app[worker.1]: Traceback (most recent call last):
2020-06-15T20:59:43.441997+00:00 app[worker.1]: File "bot.py", line 8, in <module>
2020-06-15T20:59:43.442110+00:00 app[worker.1]: import settings as s
2020-06-15T20:59:43.442114+00:00 app[worker.1]: File "/app/settings.py", line 60, in <module>
2020-06-15T20:59:43.442251+00:00 app[worker.1]: handlers.TimedRotatingFileHandler(f'Logs/dev.log', when='midnight', backupCount=2),
2020-06-15T20:59:43.442254+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.8/logging/handlers.py", line 200, in __init__
2020-06-15T20:59:43.442437+00:00 app[worker.1]: BaseRotatingHandler.__init__(self, filename, 'a', encoding, delay)
2020-06-15T20:59:43.442439+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.8/logging/handlers.py", line 55, in __init__
2020-06-15T20:59:43.442606+00:00 app[worker.1]: logging.FileHandler.__init__(self, filename, mode, encoding, delay)
2020-06-15T20:59:43.442622+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.8/logging/__init__.py", line 1143, in __init__
2020-06-15T20:59:43.443050+00:00 app[worker.1]: StreamHandler.__init__(self, self._open())
2020-06-15T20:59:43.443054+00:00 app[worker.1]: File "/app/.heroku/python/lib/python3.8/logging/__init__.py", line 1172, in _open
2020-06-15T20:59:43.443475+00:00 app[worker.1]: return open(self.baseFilename, self.mode, encoding=self.encoding)
2020-06-15T20:59:43.443501+00:00 app[worker.1]: FileNotFoundError: [Errno 2] No such file or directory: '/app/Logs/dev.log'

Don't log to files on Heroku.不要登录到 Heroku 上的文件。 Its ephemeral filesystem means that anything you write could be lost at any time, and will be lost at least daily.它的临时文件系统意味着您编写的任何内容都可能随时丢失,并且至少每天都会丢失。

Instead, log to stderr or stdout .相反,登录到stderrstdout Then Heroku can incorporate your logs into its log stream :然后 Heroku 可以将您的日志合并到其日志 stream 中

A Heroku app's logs are aggregated from the output streams of all of its running processes, system components, and backing services Heroku 应用程序的日志是从其所有正在运行的进程、系统组件和支持服务的 output 流中聚合而成的

Logs are mostly transient on Heroku, so you might want to set up a logging addon or log drain : Heroku 上的日志大多是暂时的,因此您可能需要设置日志插件日志消耗

The logs command retrieves 100 log lines by default. logs命令默认检索 100 个日志行。 You can specify the number of log lines to retrieve (up to a maximum of 1,500 lines) by using the --num (or -n ) option.您可以使用--num (或-n )选项指定要检索的日志行数(最多 1,500 行)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 使用 Heroku 创建 django 超级用户时出错 - FileNotFoundError - Error when creating a django superuser with Heroku - FileNotFoundError FileNotFoundError:创建新文件时 - FileNotFoundError: when creating new file Heroku Python FileNotFoundError:[Errno 2] 没有这样的文件或目录 - Heroku Python FileNotFoundError: [Errno 2] No such file or directory 在python中创建新文件会导致FileNotFoundError - Creating new file in python causes FileNotFoundError Heroku:部署文件 IO 操作期间的 FileNotFoundError [Errno 2] - Python - Heroku: FileNotFoundError [Errno 2] during file IO operations on deployment - Python 在肯定异常FileNotFoundError之后创建文件 - create file after positive exception FileNotFoundError 重命名文件后出现“FileNotFoundError:没有这样的文件或目录” - 'FileNotFoundError: No such file or directory' after renaming files FileNotFoundError: [Errno 2] 没有这样的文件或目录,复制路径名后 - FileNotFoundError: [Errno 2] No such file or directory, After copying pathname 在 Python 中创建二进制只读文件时出现 FileNotFoundError - FileNotFoundError when creating a binary read only file in Python 在Python 3.5.1中使用变量创建文件时出现FileNotFoundError - FileNotFoundError when creating a file using a variable in Python 3.5.1
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM