# Copyright 2024 FastLabs Developers
#
# 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.

[package]
name = "logforth"
version = "0.30.0"

description = "A versatile and extensible logging implementation."
keywords = ["logging", "log", "opentelemetry", "fastrace"]

categories.workspace = true
edition.workspace = true
homepage.workspace = true
license.workspace = true
readme.workspace = true
repository.workspace = true
rust-version.workspace = true

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[features]
default = []

# Starters
starter-log = [
  "dep:log",
  "bridge-log",
  "append-file",
  "layout-text",
  "layout-json",
  "filter-rustlog",
]

# Bridges
bridge-log = ["dep:logforth-bridge-log"]
bridge-log-serde = ["bridge-log", "logforth-bridge-log/serde"]

# Appenders
append-async = ["dep:logforth-append-async"]
append-fastrace = ["dep:logforth-append-fastrace"]
append-file = ["dep:logforth-append-file"]
append-journald = ["dep:logforth-append-journald"]
append-opentelemetry = ["dep:logforth-append-opentelemetry"]
append-syslog = ["dep:logforth-append-syslog"]

# Layouts
layout-google-cloud-logging = ["dep:logforth-layout-google-cloud-logging"]
layout-json = ["dep:logforth-layout-json"]
layout-logfmt = ["dep:logforth-layout-logfmt"]
layout-text = ["dep:logforth-layout-text"]

# Diagnostics
diagnostic-fastrace = ["dep:logforth-diagnostic-fastrace"]
diagnostic-task-local = ["dep:logforth-diagnostic-task-local"]

# Filters
filter-rustlog = ["dep:logforth-filter-rustlog"]

# Standalone features
native-tls = ["logforth-append-syslog?/native-tls"]
rustls = ["logforth-append-syslog?/rustls"]

[dependencies]
logforth-core = { workspace = true }

# Optional dependencies
log = { workspace = true, optional = true }
logforth-append-async = { workspace = true, optional = true }
logforth-append-fastrace = { workspace = true, optional = true }
logforth-append-file = { workspace = true, optional = true }
logforth-append-journald = { workspace = true, optional = true }
logforth-append-opentelemetry = { workspace = true, optional = true }
logforth-append-syslog = { workspace = true, optional = true }
logforth-bridge-log = { workspace = true, optional = true }
logforth-diagnostic-fastrace = { workspace = true, optional = true }
logforth-diagnostic-task-local = { workspace = true, optional = true }
logforth-filter-rustlog = { workspace = true, optional = true }
logforth-layout-google-cloud-logging = { workspace = true, optional = true }
logforth-layout-json = { workspace = true, optional = true }
logforth-layout-logfmt = { workspace = true, optional = true }
logforth-layout-text = { workspace = true, optional = true }

[dev-dependencies]
log = { workspace = true }
logforth-append-file = { workspace = true }

[lints]
workspace = true

[[test]]
name = "recursive_logging"
path = "tests/recursive_logging.rs"
required-features = ["starter-log"]
