Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Standardize the name of logging/stdout exporter #1931

Closed
tigrannajaryan opened this issue Sep 16, 2021 · 11 comments
Closed

Standardize the name of logging/stdout exporter #1931

tigrannajaryan opened this issue Sep 16, 2021 · 11 comments
Assignees
Labels
spec:miscellaneous For issues that don't match any other spec label wontfix This will not be worked on

Comments

@tigrannajaryan
Copy link
Member

Different SDK and Collector use different names for the exporter which writes to stdout:

The spec says:

Standard output (or logging) to use for debugging and testing as well as an input for the various log proxy tools.

I think it is important to standardize on a name since it came up as an issue in the Collector.

Unless someone knows good reasons to choose a particular name I suggest that we vote for a name and stick to it.

@jkwatson
Copy link
Contributor

Just FYI, Java has 2 "logging" exporters. One that is purely for lightweight debugging (and doesn't contain full span data) and one that logs full OTLP json.

@yurishkuro
Copy link
Member

@tigrannajaryan to me there is a difference between stdout/console and "logging", as the latter is an abstraction layer with stdout being one of the possible implementations. E.g. in Jaeger SDKs we have "logging reporter" in all languages, but those are not even true "exporters" because all they do is log some readable string about spans (name, id), not the complete span data.

Standard output (or logging) to use for debugging and testing as well as an input for the various log proxy tools.

This is clearly underspecified because if interpreted as "export data to stdout in plain text" we still need to define the format of that plain text (e.g. JSON).

@pellared
Copy link
Member

pellared commented Sep 16, 2021

What about text exporter? Then it can be configurable to use different streams e.g. stdout, stderr or file. By default, it could be configured to write to stdout.

@yurishkuro
Copy link
Member

@pellared I think my questions are:

  • is is a true lossless exporter or a debugging facility like Jagger's Logging Reporter ?
  • if it's a lossless exporter, what format of "text" does it print? If it prints "JSON" then why not call it "JSON exporter"?

@pellared
Copy link
Member

pellared commented Sep 16, 2021

@pellared I think my questions are:

  • is is a true lossless exporter or a debugging facility like Jagger's Logging Reporter ?
  • if it's a lossless exporter, what format of "text" does it print? If it prints "JSON" then why not call it "JSON exporter"?
  • AFAIK it is "a true lossless exporter" everywhere.
  • How about making the formatting/serialization configurable? By default, it could be JSON. But it could be simply json exporter to not overcomplicate.

@jkwatson
Copy link
Contributor

What about text exporter? Then it can be configurable to use different streams e.g. stdout, stderr or file. By default, it could be configured to write to stdout.

In java, we would definitely want to use the standard java.util.logging APIs to implement this (as we are), and it has it's own configuration mechanisms for formatting and output which I wouldn't want to have to reinvent.

@tigrannajaryan
Copy link
Member Author

tigrannajaryan commented Sep 17, 2021

  • AFAIK it is "a true lossless exporter" everywhere.

logging exporter is not lossless in Collector. However, Collector also has a file exporter which is lossless and exports OTP/JSON.

So, it seems like we want to clearly differentiate 2 exporters:

  • For debugging purposes. Output is designed to be human readable. No requirement to be lossless and machine parseable. Possible name candidates: logging, debug, console perhaps?
  • For storage, transmission, etc. Output must be lossless and machine parsable. Possible name candidates: text, file perhaps?

@tigrannajaryan
Copy link
Member Author

Just FYI, Java has 2 "logging" exporters. One that is purely for lightweight debugging (and doesn't contain full span data) and one that logs full OTLP json.

Same in Collector. logging exporter is human-readable, level of details is configurable and no guarantees that the data is represented in lossless format. file exporter is strictly OTLP/JSON text.

@tigrannajaryan
Copy link
Member Author

This is clearly underspecified because if interpreted as "export data to stdout in plain text" we still need to define the format of that plain text (e.g. JSON).

I think this open issue should resolve that: #1443

@mtwo
Copy link
Member

mtwo commented Sep 20, 2021

From the maintainers call: general agreement that this name should not be standardized across languages, as the names that developers expect are different across languages (C++ devs will expect 'cout', while .Net devs will expect "system.console").

However, we should also be careful that we distinguish between logs for debugging purposes (writing traces, metrics, etc. as logs to disk), and the actual first-class collection of application and infrastructure logs as a signal in OpenTelemetry.

@tigrannajaryan
Copy link
Member Author

Based on Maintainer's SIG call I am closing this as "won't do". Feel free to reopen if you have additional arguments.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
spec:miscellaneous For issues that don't match any other spec label wontfix This will not be worked on
Projects
None yet
Development

No branches or pull requests

6 participants