2012-04-08 14 views
6

log Cần tây của tôi luôn truncates (không phải là rất) thông báo lỗi dài, như thế này:Cần tây truncates thông điệp log

[2012-04-08 04:53:10,084: INFO/MainProcess] Task mainapp.tasks.async_submitter[2df2fe93-156b-4944-9ecf-c55ba53e8aaa] succeeded in 0.190640926361s: 'An error occurred during the submission of... 

Không cần phải nói, điều này loại bỏ một nửa mục đích khai thác gỗ. Làm thế nào tôi có thể ngăn chặn điều này xảy ra?

Tôi đang chạy cần tây với django-cần tây (thông qua django-giám sát viên với người giám sát) trên linux.

+1

Trông với tôi như là sự cắt cụt xảy ra trong [ 'công nhân/job.py:repr_result()'](https://github.com/celery/celery/blob/master/celery/worker/job.py#L508). Điều này sẽ lấy một đối số 'maxlen', nhưng ở [nơi mà phương thức này được gọi] (https://github.com/celery/celery/blob/master/celery/worker/job.py#L394),' maxlen' đối số không bao giờ được sử dụng - vì vậy tiếc là tôi không nghĩ rằng có một cách để cấu hình này :-( –

+0

@LukasGraf Cảm ơn. – Marcin

Trả lời

0

Nhiệm vụ, quay lại theo thiết kế, nên được sử dụng để xử lý thêm trong mã của bạn và đây là lý do tại sao nhà phát triển lấy quyền tự do cắt ngắn nhật ký, cũng bởi vì lợi nhuận có thể là kết quả khá lớn của việc xây dựng và có thể ghi nhật ký không đọc được đầu ra thông tin. Dĩ nhiên tôi có thể sai nhưng kể từ khi tôi làm việc với Celery tôi luôn tìm thấy logic này đúng và không bao giờ làm phiền tôi. Trong trường hợp của bạn, tôi cho rằng cần đăng nhập ngay trước khi trở về với logger.info (sẽ không bị cắt bớt) và nếu thư bạn đang quay lại thực sự không cần thiết để xử lý tiếp nhưng chỉ cho mục đích ghi nhật ký t trả về bất kỳ giá trị nào.

1

Thật không may, Celery sẽ cắt ngắn thư theo mặc định có.

Từ phiên bản 3.1.7 để 3.1.9 nó có vẻ là có thể tinh chỉnh giới hạn này bằng cách vá của một mô-đun trên toàn cầu:

import celery.worker.job 

celery.worker.job.RESULT_MAXLEN = 1048576 # 1 Mib