1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
// Copyright 2020 Tetrate
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

//! `Envoy` `Log API`.
//!
//! # Examples
//!
//! #### Basic usage of `Envoy` `Log API`:
//!
//! ```
//! # use envoy_sdk as envoy;
//! use envoy::host::log;
//!
//! log::error!("logging a message through `Envoy Log API` at {} level", "error");
//! log::info!("logging a message through `Envoy Log API` at {} level", "info");
//! log::debug!("logging a message through `Envoy Log API` at {} level", "debug");
//! ```
//!
//! #### Usage of `Envoy` `Log API` in a HTTP Filter:
//!
//! ```
//! # use envoy_sdk as envoy;
//! use envoy::extension::{HttpFilter, Result};
//! use envoy::extension::filter::http::{FilterHeadersStatus, RequestHeadersOps};
//! use envoy::host::log;
//!
//! struct MyHttpFilter;
//!
//! impl HttpFilter for MyHttpFilter {
//!     fn on_request_headers(&mut self, num_headers: usize, _end_of_stream: bool, ops: &dyn RequestHeadersOps) -> Result<FilterHeadersStatus> {
//!         log::info!("HTTP request contains {} headers", num_headers);
//!         Ok(FilterHeadersStatus::Continue)
//!     }
//! }
//! ```

pub use crate::abi::proxy_wasm::types::LogLevel;

#[cfg(feature = "log")]
pub use log::{debug, error, info, trace, warn};

/// Sets the global maximum log level.
///
/// # Examples
///
/// ```
/// # use envoy_sdk as envoy;
/// use envoy::host::log::{self, LogLevel};
///
/// // change max log level (by default, `LogLevel::Info`)
/// log::set_max_level(LogLevel::Debug);
/// ```
#[cfg(feature = "log")]
pub use crate::abi::proxy_wasm::set_log_level as set_max_level;