Вы можете использовать один и тот же регистратор для Actix-web и остальной части вашего приложения. Ключ заключается в том, чтобы различать вызовы макросов (trace !, debug !, info !, warn! И error!) Путем включения необязательного параметра target
. Затем необходимо установить переменную среды RUST_LOG.
Пример вызова:
RUST_LOG="info,parser::expression=trace,actix_web=info" cargo run
-
actix_web
предназначается для их кода и печатает информацию и сообщения более высокого уровня. -
parser::expression
предназначен для части моего кода и включает сообщения уровня трассировки.
В моем коде приведен пример сообщения трассировки:
trace!(target: "parser::expression", "Tracing: {}", self.expression_source);
Если выпропустите параметр target
, ваш путь к модулю становится целью по умолчанию, или, как говорят в документации, но каждое правописание, которое я использовал для пути к модулю, включая все больше и меньше частей, включая имя класса и т. д., завершается неудачей, поэтому яне понимаю документы. Задание его вручную работает, поэтому я так и делаю.
Также важно правильно настроить импорт ящика в файле Cargo.toml:
[dependencies]
log = { version = "0.4", features = ["max_level_trace", "release_max_level_warn", "std", "serde"] }
Вышеприведенные сообщения разрешают трассировкуна сборке dev, но только предупреждения на сборке релиза. Компилятор отбрасывает код во время компиляции, поэтому изменение переменной среды во время выполнения не окажет влияния на такого рода изменения.
Вот некоторая полезная документация:
https://rust -lang-nursery.github.io / ржавчины поваренной / development_tools / отладки / config_log.html