script-server
script-server copied to clipboard
missing log directory when using -l
Hello,
Version tested 1.17.0 in docker
Running the application
python3 launcher.py -l /tmp/logs
output error
Traceback (most recent call last):
File "/usr/lib64/python3.6/logging/config.py", line 565, in configure
handler = self.configure_handler(handlers[name])
File "/usr/lib64/python3.6/logging/config.py", line 738, in configure_handler
result = factory(**kwargs)
File "/usr/lib64/python3.6/logging/__init__.py", line 1032, in __init__
StreamHandler.__init__(self, self._open())
File "/usr/lib64/python3.6/logging/__init__.py", line 1061, in _open
return open(self.baseFilename, self.mode, encoding=self.encoding)
FileNotFoundError: [Errno 2] No such file or directory: '/app/logs/server.log'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "launcher.py", line 11, in <module>
main.main()
File "src/main.py", line 71, in main
logging.config.dictConfig(log_config)
File "/usr/lib64/python3.6/logging/config.py", line 802, in dictConfig
dictConfigClass(config).configure()
File "/usr/lib64/python3.6/logging/config.py", line 573, in configure
'%r: %s' % (name, e))
ValueError: Unable to configure handler 'file': [Errno 2] No such file or directory: '/app/logs/server.log'
I guess there is a missing configuration in the src/main.py to setup server.log file in the directory taken from the arg.
Hi @dutangp, yes, you are right. -l flag affects only script logs (not server.log), this is a bug
hey,
Just a suggestion, in docker at least, to be able to remove this server.log in file as all the log a shipped to stdout of the container and can be handled differently.
hello,
For info I found the way in docker by rebuilding the Dockerfile with ENTRYPOINT instead of CMD
ENTRYPOINT [ "python3", "launcher.py" ]
and modifying the file logging.json as below
{
"version": 1,
"disable_existing_loggers": false,
"formatters": {
"simple": {
"format": "%(asctime)s [%(name)s.%(levelname)s] %(message)s"
}
},
"handlers": {
"console": {
"class": "logging.StreamHandler",
"level": "DEBUG",
"formatter": "simple",
"stream": "ext://sys.stdout"
}
},
"loggers": {
},
"root": {
"level": "DEBUG",
"handlers": [
"console"
]
}
}
In docker server.log doesn't bring anything as logs can be handled via std out only and redirection to ES. As well the entrypoint can handle the parameters -d, -l, -t.
@bugy no rush at all on fixing this point imho but you are the boss :)
Hi @dutangp, I would agree with you, that a standard logging mechanism in docker is stdout. However, someone can also mount script server log folder to a host folder, making them "persistent". It's needed for script execution logs anyway. For me, the proper fix would be to make it configurable via conf.json. For now I would keep existing behaviour as it is.
@dmarteau @dutangp i made a fix for it, could you test it please?