// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.diagnostics;

// NOTE TO REVIEWERS:
// sdk/lib/syslog/duplicate_header_test/duplicate_header_unittest.cc
// MUST be updated when updating this file. Do not +2 any changes
// unless that test is updated. Other header files must be kept in-sync with
// these values.

/// The severity of a given record.
// Note that these severities correspond to and must match the values defined in
// fuchsia.logger.LogLevelFilter.
// TODO(https://fxbug.dev/104630): Change this from `strict` to `flexible` #strictaudit
type Severity = strict enum : uint8 {
    /// Trace records include detailed information about program execution.
    TRACE = 0x10;
    /// Debug records include development-facing information about program execution.
    DEBUG = 0x20;
    /// Info records include general information about program execution. (default)
    INFO = 0x30;
    /// Warning records include information about potentially problematic operations.
    WARN = 0x40;
    /// Error records include information about failed operations.
    ERROR = 0x50;
    /// Fatal records convey information about operations which cause a program's termination.
    FATAL = 0x60;
};
