Hỏi cách để truy cập log của container nhanh hơn

Chào cả nhà,
Mình có 1 app python nhỏ, app này có gen ra 1 file log (log.txt) khi nó chạy. Khi mình muốn coi file này mình thường làm 2 cách:

  • Mount file này ra host khi chạy container
  • Dùng docker exec vào trong container xem trong container

Mình muốn hỏi có cách nào dễ dàng hơn không nhỉ, ví dụ như lệnh docker logs chẳng hạn. Mình dùng docker logs thì mình chỉ coi được log của base image (của mình là python), có cách nào chuyển nó về file log.txt của mình không nhỉ? để khi mình gõ docker log my-container -f nó sẽ in ra nội dung file log.txt của mình chẳng hạn

Cảm ơn cả nhà

docker exec [container] [command]

docker exec container-name cat log.txt
3 Likes

docker cho phép map đường dẫn bên trong container ra tương ứng đường dẫn khác ở host mà

2 Likes

muốn xài docker logs thì thêm 1 flow redirect python log ra stdout là được

2 Likes

Cảm ơn bác, đây cũng là cách em đang dùng luôn. :heart_eyes:

Có nè, em cũng đang dùng, em muốn xem có cách nào hay hơn không thui, ví dụ như docker logs cái nó show luôn file đó

Đây đúng là cách mình đang cần, bác cho em xin thêm thông tin em tìm hiểu được không?

bạn tìm hiểu về logging.config.dictConfig của python. rồi chỉnh theo ý bạn là được
cơ bản ý tưởng sẽ là

  1. config 1 handler mới cho ra stdout, đi kèm với 1 handler cũ ra file
  2. config logger với từng handler tương ứng
    bạn có thể nghía qua sample này
log_config = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'simple': {'format': '%(levelname)s %(message)s'},
    },
    'handlers': {
        'file_activity': {
            'level': 'INFO',
            'class': 'logging.FileHandler',
            'filters': ['below_error_level'],
            'filename': 'log.log',
            'formatter': 'simple',
        },
        'console_stdout': {
            'class': 'logging.StreamHandler',
            'level': 'DEBUG',
            'formatter': 'simple'
        },
    },
    'loggers': {
        'sample-logger1': {
            'handlers': ['file_activity', 'console_stdout'],
            'level': 'INFO',
        }
    },
}
logging.config.dictConfig(log_config)
4 Likes

Xoay quanh chuyện ghi log của ứng dụng, bạn có thể đọc thêm https://quan.hoabinh.vn/blog/2021/8/94-khoi-dau-du-an-python-nhu-the-nao-de-thuan-tien-phat-trien-len

4 Likes

Hù, vụ journalctl này giờ mình mới biết. Hay quá, cảm ơn bác nhé.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?