11 Commits

Author SHA1 Message Date
Alexis Mousset
2cfc5130b6 log: Fix inverted module_path and file in AsTrace implementation (#187)
## Motivation

The metadata produced for logs by `as_trace` (used for filtering), when
using `tracing-log`, have inverted file and module path fields:

```
Metadata { name: "log record", target: "tokio_reactor", level: Level(Trace),
  module_path: "/.../.cargo/registry/src/github.com-.../tokio-reactor-0.1.9/src/lib.rs",
  location: tokio_reactor:390, [...] }
```

## Solution

It is fixed by passing them in the right order in the `Metadata` constructor.
2019-07-13 10:17:38 -07:00
Eliza Weisman
96424d04a1
chore: update everything to use try_close (#174)
## Motivation

`tracing-core` 0.1.2 deprecated the `Subscriber::drop_span` function in
favour of `try_close`.

## Solution

This branch updates all other crates to depend on core 0.1.2, and
replaces uses of `drop_span` with `try_close`.

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2019-07-11 11:56:04 -07:00
Lucio Franco
3dc80c9196
subscriber: Fix tracing path dep (#146) 2019-07-03 18:05:20 -04:00
Sam Scott
26f201750a tracing-log: Add log metadata values to the dispatched Event. (#138)
## Motivation

It would be nice if `Event`s created by `tracing-log` (which are derived
from `log::Record`) include the additional metadata that `log` includes:
target, module, file, and line information. This can be used by
subscribers to print this metadata to make the events look more like
tracing events. 

In fact, the static `Callsite` in `tracing-log` includes those as
fields, so I hoped this was the intended behaviour.

## Solution

This follows the same patterns as existed for adding values to the
`ValueSet` included with a dispatched event.
2019-07-03 14:47:06 -07:00
Eliza Weisman
7ba800e872
chore: add edition = "2018 to Cargo.tomls (#132)
## Motivation

#122 updated all crates to use Rust 2018 syntax, but I neglected to add
`edition = "2018"` to the `Cargo.toml`s. 

## Solution

This fixes that.

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2019-07-01 13:34:08 -07:00
Jon Gjengset
d5bd0da841
Undo #113 and re-enable git dependencies (#114)
Revert "update crates to depend on core from crates.io (#113)" and let tracing-core use tracing from crates.io

This reverts commit 1c6b4388d49aa3202ae39fd396500677cb3c5730.
2019-06-27 21:15:34 -04:00
Eliza Weisman
1c6b4388d4
update crates to depend on core from crates.io (#113)
This branch updates `tracing`, `tracing-fmt`, and `tracing-log`
to depend on `tracing-core` 0.1 from crates.io.

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2019-06-27 17:05:18 -07:00
Eliza Weisman
2ea0cceca5
core: change Span and Event metadata to be 'static (#110)
## Motivation

Currently, the `span::Attributes` type in `tokio-trace-core` contains a
reference to `Metadata` with a generic lifetime `'a`. This means that if
a `Subscriber` wishes to store span metadata, it cannot simply store a
`&'static Metadata<'static>`. Instead, it must extract the individual
components from the metadata and store them in its own structure. In
addition, while the `name` and `FieldSet` in a `Metadata` are always
`'static`, the target and file path are not.  If the `Subscriber` needs
to store those values, they must be cloned into a `String` on the heap.

This is somewhat unergonomic for subscriber implementors, in comparison
to being able to use a `&'static Metadata<'static>` reference. In
addition, it implies additional overhead when using certain parts of a
span's metadata.

## Solution

This branch changes the `Metadata` fields in `Event` and `Attributes` to
be `'static`, and `Subscriber::register_callsite` to take an
`&'static Metadata<'static>`. Unlike PR #108, this branch leaves
`Metadata` generic over a lifetime, and `Subscriber::enabled` takes an
`&'a Metadata<'a>`.

Since subscribers are provided all span metadata as a static reference
in both `register_callsite` and `new_span`, they can clone _those_
static references, but `Subscriber::enabled` can still be called with
`Metadata` constructed from a `log::Record`. This means that log records
can still be filtered as normal. A different callsite, which does not
have metadata from the log record, is used when actually recording
events constructed from `log::Records`; in a follow-up, we can propagate
the log metadata as fields there.

Closes #78
Closes #108

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2019-06-27 15:18:32 -07:00
Eliza Weisman
94d87ae072
fmt, log: fix API breakage (#107)
## Motivation

PR #106 broke some APIs that the nursery crates `tracing-fmt` and
`tracing-log` depended on. At the time, we didn't catch this, as those
crates still depended on `tokio-trace`/`tokio-trace-core` from
crates.io. However, after merging #101, which updated those crates to
use path dependencies on `tracing`/`tracing-core`, those crates broke. 

## Solution

This branch updates `tracing-fmt` and `tracing-log` to compile with the
changed APIs. `tracing-log` was also changed to depend on `tracing-core`
rather than `tracing`, as only the `core API is required by that crate,
and the `identify_callsite!` macro is not publically re-exported by 
`tracing`.

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2019-06-27 13:05:19 -07:00
Eliza Weisman
3081a19812
chore: update nursery crates to use path deps on tracing (#101)
This branch updates the "nursery" crates to depend on `tracing` and
`tracing-core` as path dependencies, rather than depending on the
crates.io releases of `tokio-trace` and `tokio-trace-core`. When
`tracing` and `tracing-core` are released, we will change these from
path dependencies to crates.io dependencies.

This branch also updates those crates to track API changes in `tracing`
and `tracing-core`.

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2019-06-26 16:42:10 -07:00
Eliza Weisman
6a5cb28a44
meta: rename everything to tracing (#99)
See #95 

This branch renames everything from `tokio-trace` to `tracing`.

Unlike PR #98, the nursery crates still depend on the crates.io
versions of `tokio-trace` and `tokio-trace-core`, but renamed
to `tracing`/`tracing-core` in `Cargo.toml`. We can update the
nursery crates to depend on local path dependencies in a 
subsequent PR, as that will require making code changes to the
nursery crates.

This branch _also_ updates the minimum Rust version to 1.34.0,
to the shock and horror of the millions of `tracing` users still
on Rust 1.26.0. This was necessary in order to allow renaming
crates in `Cargo.toml`, and to resolve that not using the `dyn` 
keyword is now a warning on nightly.

Closes #98 
Closes #95

Signed-off-by: Eliza Weisman <eliza@buoyant.io>
2019-06-26 11:31:07 -07:00