Skip to content

Commit 2389785

Browse files
authored
feat: add optional json logging format for advanced configurations (#25)
1 parent c3bf02f commit 2389785

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed

README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,15 @@ For a complete list of variables check the section below.
3636
| `PYROSCOPE_TENANT_ID` | `""` | phlare tenant ID, passed as X-Scope-OrgID http header |
3737
| `PYROSCOPE_BASIC_AUTH_USER` | `""` | HTTP basic auth user |
3838
| `PYROSCOPE_BASIC_AUTH_PASSWORD` | `""` | HTTP basic auth password |
39+
| `PYROSCOPE_LOG_FORMAT` | `"text"` | format to choose from from `"text"` and `"json"` |
40+
| `PYROSCOPE_LOG_TIMESTAMP_FORMAT` | `time.RFC3339` | logging timestamp format ([go time format](https://golang.org/pkg/time/#pkg-constants)) |
41+
| `PYROSCOPE_LOG_TIMESTAMP_DISABLE` | `false` | disables automatic timestamps in logging output |
42+
| `PYROSCOPE_LOG_TIMESTAMP_FIELD_NAME` | `"time"` | change default field name in logs of automatic timestamps |
43+
| `PYROSCOPE_LOG_LEVEL_FIELD_NAME` | `"level"` | change default field name in logs of level |
44+
| `PYROSCOPE_LOG_MSG_FIELD_NAME` | `"msg"` | change default field name in logs of message |
45+
| `PYROSCOPE_LOG_LOGRUS_ERROR_FIELD_NAME` | `"logrus_error"` | change default field name in logs of logrus error |
46+
| `PYROSCOPE_LOG_FUNC_FIELD_NAME` | `"func"` | change default field name in logs of caller function |
47+
| `PYROSCOPE_LOG_FILE_FIELD_NAME` | `"file"` | change default field name in logs of caller file |
3948

4049
# How it works
4150
The profiler will run as normal, and periodically will send data to the relay server (the server running at `http://localhost:4040`).

main.go

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,22 @@ var (
2828
// 'trace' | 'debug' | 'info' | 'error'
2929
logLevel = getEnvStrOr("PYROSCOPE_LOG_LEVEL", "info")
3030

31+
// log format options 'json' | 'text'
32+
logFormat = getEnvStrOr("PYROSCOPE_LOG_FORMAT", "text")
33+
34+
// log timestamp format (default: time.RFC3339), see https://golang.org/pkg/time/#pkg-constants
35+
logTsFormat = getEnvStrOr("PYROSCOPE_LOG_TIMESTAMP_FORMAT", time.RFC3339)
36+
37+
logDisableTs = getEnvBool("PYROSCOPE_LOG_TIMESTAMP_DISABLE")
38+
39+
// log field names
40+
logTsFieldName = getEnvStrOr("PYROSCOPE_LOG_TIMESTAMP_FIELD_NAME", logrus.FieldKeyTime)
41+
logLevelFieldName = getEnvStrOr("PYROSCOPE_LOG_LEVEL_FIELD_NAME", logrus.FieldKeyLevel)
42+
logMsgFieldName = getEnvStrOr("PYROSCOPE_LOG_MSG_FIELD_NAME", logrus.FieldKeyMsg)
43+
logErrorFieldName = getEnvStrOr("PYROSCOPE_LOG_LOGRUS_ERROR_FIELD_NAME", logrus.FieldKeyLogrusError)
44+
logFuncFieldName = getEnvStrOr("PYROSCOPE_LOG_FUNC_FIELD_NAME", logrus.FieldKeyFunc)
45+
logFileFieldName = getEnvStrOr("PYROSCOPE_LOG_FILE_FIELD_NAME", logrus.FieldKeyFile)
46+
3147
// to where relay data to
3248
remoteAddress = getEnvStrOr("PYROSCOPE_REMOTE_ADDRESS", "https://ingest.pyroscope.cloud")
3349

@@ -106,6 +122,38 @@ func initLogger() *logrus.Entry {
106122
}
107123

108124
logrus.SetLevel(lvl)
125+
126+
var f logrus.Formatter
127+
switch logFormat {
128+
case "json":
129+
f = &logrus.JSONFormatter{
130+
TimestampFormat: logTsFormat,
131+
DisableTimestamp: logDisableTs,
132+
FieldMap: logrus.FieldMap{
133+
logrus.FieldKeyTime: logTsFieldName,
134+
logrus.FieldKeyLevel: logLevelFieldName,
135+
logrus.FieldKeyMsg: logMsgFieldName,
136+
logrus.FieldKeyLogrusError: logErrorFieldName,
137+
logrus.FieldKeyFunc: logFuncFieldName,
138+
logrus.FieldKeyFile: logFileFieldName,
139+
},
140+
}
141+
default:
142+
f = &logrus.TextFormatter{
143+
TimestampFormat: logTsFormat,
144+
DisableTimestamp: logDisableTs,
145+
FieldMap: logrus.FieldMap{
146+
logrus.FieldKeyTime: logTsFieldName,
147+
logrus.FieldKeyLevel: logLevelFieldName,
148+
logrus.FieldKeyMsg: logMsgFieldName,
149+
logrus.FieldKeyLogrusError: logErrorFieldName,
150+
logrus.FieldKeyFunc: logFuncFieldName,
151+
logrus.FieldKeyFile: logFileFieldName,
152+
},
153+
}
154+
}
155+
logrus.SetFormatter(f)
156+
109157
return logger
110158
}
111159

0 commit comments

Comments
 (0)