Tôi muốn viết một số thông tin nhật ký từ tập lệnh chính của python vào một tệp trong/var/log.Thực hành tốt nhất để ghi nhật ký trong/var/log từ tập lệnh python?
Khi tôi gọi logger.info("Starting")
, tôi nhận được PermissionError trên tệp, điều này khá bình thường vì tệp trong/var/log thuộc về gốc và chương trình của tôi không chạy dưới dạng gốc.
Tôi có thể đặt tất cả các quyền của /var/log/my.log
để cho phép myapp viết vào đó. (Đặt cùng một nhóm chẳng hạn). Nhưng nó không giống như một thực hành tốt cho tôi: nếu tôi cài đặt myapp trên một máy tính khác thì sao? Tôi có nên thay đổi quyền trên tệp nhật ký trong quá trình cài đặt không? Hoặc có cách nào khác chung hơn để làm điều đó? (Giống như một cách chung chung để gửi nhật ký cho "hệ thống"? Bằng cách chung chung tôi cũng có nghĩa là cũng di động, những gì sẽ làm việc trên linux, freebsd, vv)
Mặc dù tôi không chắc chắn nó có liên quan, thông tin, đây là một số phần của mã của tôi:
kịch bản chi tiết:
import logging, logging.config
from lib import settings
settings.init()
logging.config.fileConfig(settings.logging_conf_file)
logger = logging.getLogger(__name__)
việc xử lý phù hợp với settings.logging_conf_file
, trong file ghi cấu hình:
[handler_mainHandler]
class=FileHandler
level=INFO
formatter=defaultFormatter
filemode=w
args=('/var/log/myapp.log',)
Điều này có vẻ tốt cho FreeBSD, nhưng tiếc là hộp linux của tôi đã không syslogd chạy theo mặc định. Thay vào đó nó có rsyslogd và nó dường như không nghe bất kỳ cổng nào. Tôi vẫn cần phải tìm hiểu làm thế nào để cấu hình nó đúng và xem nếu SysLogHandler sẽ làm việc với rsyslogd quá. – zezollo
Vẫn đang vật lộn để định cấu hình này. Đã phải hỏi [một câu hỏi khác] (http://stackoverflow.com/questions/36793037/how-to-configure-rsyslog-for-use-with-sysloghandler-logging-class). – zezollo