# pine
![](./pine.svg)
[![Package Version](https://img.shields.io/hexpm/v/pine)](https://hex.pm/packages/timber)
[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/pine/)
```sh
gleam add pine
```
```gleam
import pine
pub fn main() {
// The defaults work out of the box.
// This will print a line to the console.
pine.new()
|> pine.info("hello world!")
// info <unix millis> hello world!
// Pine is configurable!
pine.new()
// You can set the level.
|> pine.set_level(pine.level_info())
// As well as the format.
|> pine.set_format(pine.format_json())
// And finally, the transport!
|> pine.set_transport(pine.transport_file("logs.txt"))
// Different log functions are on the pine module.
pine.new()
// You have access to "debug" logs
|> pine.debug("debug message")
// As well as 'info' logs
|> pine.info("info message")
// As well as 'warn' logs
|> pine.warn("warn message")
// As well as 'err' logs
|> pine.err("err message")
// You can add attributes to loggers as needed.
// This is especially useful for telemetry and tracing.
pine.new()
// Such as strings
|> pine.with_string("version", "v1.0.2")
// Or ints
|> pine.with_int("page_views", 69)
// Or floats
|> pine.with_float("opacity", 0.89)
// or bools
|> pine.with_bool("checked_balance", False)
// then see them all in action
|> pine.info("hello world!")
// info <unix millis> hello world! version=v1.0.2 page_views=69 opacity=0.89 checked_balance=False
}
```
Further documentation can be found at <https://hexdocs.pm/pine>.
## Development
```sh
gleam run # Run the project
gleam test # Run the tests
```