Skip to content

Level

Canonical source: protos/lib/logging/Level.protos at locked revision e99b712ecf658a527b1fe82c8beba2c1286d8dc9.

// THE LICENSED WORK IS PROVIDED UNDER THE TERMS OF THE ADAPTIVE PUBLIC LICENSE
// ("LICENSE") AS FIRST COMPLETED BY: Guillermo Adrián Molina. ANY USE, PUBLIC
// DISPLAY, PUBLIC PERFORMANCE, REPRODUCTION OR DISTRIBUTION OF, OR PREPARATION OF
// DERIVATIVE WORKS BASED ON, THE LICENSED WORK CONSTITUTES RECIPIENT'S ACCEPTANCE
// OF THIS LICENSE AND ITS TERMS, WHETHER OR NOT SUCH RECIPIENT READS THE TERMS OF
// THE LICENSE. "LICENSED WORK" AND "RECIPIENT" ARE DEFINED IN THE LICENSE. A COPY
// OF THE LICENSE IS LOCATED IN THE TEXT FILE ENTITLED "LICENSE.TXT" ACCOMPANYING
// THE CONTENTS OF THIS FILE. IF A COPY OF THE LICENSE DOES NOT ACCOMPANY THIS
// FILE, A COPY OF THE LICENSE MAY ALSO BE OBTAINED AT THE FOLLOWING WEB SITE:
// https://github.com/guillermomolina/protos
//
// Software distributed under the License is distributed on an "AS IS" basis,
// WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
// the specific language governing rights and limitations under the License.
//! Canonical logging severity levels. The five levels, in ascending order of
//! severity, are `TRACE`, `DEBUG`, `INFO`, `WARN`, and `ERROR`. Each level is
//! its canonical String value: `Level.INFO` is exactly `"INFO"`, so a level is
//! immutable, compares with `===` and `==`, and keeps its identity across
//! Actor, Task, and Process boundaries without any shared registry.
//!
//! There is no `FATAL` level: logging reports severity and never implies
//! terminating a Process. Severity order is observed only through `compare`;
//! no numeric rank is part of the public contract.
/// The finest-grained diagnostic level.
TRACE: "TRACE"
/// Detailed diagnostics intended for debugging.
DEBUG: "DEBUG"
/// Ordinary operational information.
INFO: "INFO"
/// A condition that deserves attention but does not prevent progress.
WARN: "WARN"
/// A failure of the operation being reported.
ERROR: "ERROR"
/// Answers `-1`, `0`, or `1` as level `left` is less severe than, equal to, or
/// more severe than level `right`. Both arguments must be canonical levels;
/// any other value signals an Error. Arguments are recognized by String
/// identity only, so no behavior of an argument is invoked.
compare: (left, right) => {
rank: (level) => {
result: -1
(level === "TRACE").ifTrue(() => {
result = 0
})
(level === "DEBUG").ifTrue(() => {
result = 1
})
(level === "INFO").ifTrue(() => {
result = 2
})
(level === "WARN").ifTrue(() => {
result = 3
})
(level === "ERROR").ifTrue(() => {
result = 4
})
(result < 0).ifTrue(() => {
Error().signal()
})
result
}
leftRank: rank(left)
rightRank: rank(right)
result: 0
(leftRank < rightRank).ifTrue(() => {
result = -1
})
(leftRank > rightRank).ifTrue(() => {
result = 1
})
result
}

← logging family · Standard-library source