Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,15 @@ For a complete list of variables check the section below.
| `PYROSCOPE_TENANT_ID` | `""` | phlare tenant ID, passed as X-Scope-OrgID http header |
| `PYROSCOPE_BASIC_AUTH_USER` | `""` | HTTP basic auth user |
| `PYROSCOPE_BASIC_AUTH_PASSWORD` | `""` | HTTP basic auth password |
| `PYROSCOPE_LOG_FORMAT` | `"text"` | format to choose from from `"text"` and `"json"` |
| `PYROSCOPE_LOG_TIMESTAMP_FORMAT` | `time.RFC3339` | logging timestamp format ([go time format](https://golang.org/pkg/time/#pkg-constants)) |
| `PYROSCOPE_LOG_TIMESTAMP_DISABLE` | `false` | disables automatic timestamps in logging output |
| `PYROSCOPE_LOG_TIMESTAMP_FIELD_NAME` | `"time"` | change default field name in logs of automatic timestamps |
| `PYROSCOPE_LOG_LEVEL_FIELD_NAME` | `"level"` | change default field name in logs of level |
| `PYROSCOPE_LOG_MSG_FIELD_NAME` | `"msg"` | change default field name in logs of message |
| `PYROSCOPE_LOG_LOGRUS_ERROR_FIELD_NAME` | `"logrus_error"` | change default field name in logs of logrus error |
| `PYROSCOPE_LOG_FUNC_FIELD_NAME` | `"func"` | change default field name in logs of caller function |
| `PYROSCOPE_LOG_FILE_FIELD_NAME` | `"file"` | change default field name in logs of caller file |

# How it works
The profiler will run as normal, and periodically will send data to the relay server (the server running at `http://localhost:4040`).
Expand Down
48 changes: 48 additions & 0 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,22 @@ var (
// 'trace' | 'debug' | 'info' | 'error'
logLevel = getEnvStrOr("PYROSCOPE_LOG_LEVEL", "info")

// log format options 'json' | 'text'
logFormat = getEnvStrOr("PYROSCOPE_LOG_FORMAT", "text")

// log timestamp format (default: time.RFC3339), see https://golang.org/pkg/time/#pkg-constants
logTsFormat = getEnvStrOr("PYROSCOPE_LOG_TIMESTAMP_FORMAT", time.RFC3339)

logDisableTs = getEnvBool("PYROSCOPE_LOG_TIMESTAMP_DISABLE")

// log field names
logTsFieldName = getEnvStrOr("PYROSCOPE_LOG_TIMESTAMP_FIELD_NAME", logrus.FieldKeyTime)
logLevelFieldName = getEnvStrOr("PYROSCOPE_LOG_LEVEL_FIELD_NAME", logrus.FieldKeyLevel)
logMsgFieldName = getEnvStrOr("PYROSCOPE_LOG_MSG_FIELD_NAME", logrus.FieldKeyMsg)
logErrorFieldName = getEnvStrOr("PYROSCOPE_LOG_LOGRUS_ERROR_FIELD_NAME", logrus.FieldKeyLogrusError)
logFuncFieldName = getEnvStrOr("PYROSCOPE_LOG_FUNC_FIELD_NAME", logrus.FieldKeyFunc)
logFileFieldName = getEnvStrOr("PYROSCOPE_LOG_FILE_FIELD_NAME", logrus.FieldKeyFile)

// to where relay data to
remoteAddress = getEnvStrOr("PYROSCOPE_REMOTE_ADDRESS", "https://ingest.pyroscope.cloud")

Expand Down Expand Up @@ -106,6 +122,38 @@ func initLogger() *logrus.Entry {
}

logrus.SetLevel(lvl)

var f logrus.Formatter
switch logFormat {
case "json":
f = &logrus.JSONFormatter{
TimestampFormat: logTsFormat,
DisableTimestamp: logDisableTs,
FieldMap: logrus.FieldMap{
logrus.FieldKeyTime: logTsFieldName,
logrus.FieldKeyLevel: logLevelFieldName,
logrus.FieldKeyMsg: logMsgFieldName,
logrus.FieldKeyLogrusError: logErrorFieldName,
logrus.FieldKeyFunc: logFuncFieldName,
logrus.FieldKeyFile: logFileFieldName,
},
}
default:
f = &logrus.TextFormatter{
TimestampFormat: logTsFormat,
DisableTimestamp: logDisableTs,
FieldMap: logrus.FieldMap{
logrus.FieldKeyTime: logTsFieldName,
logrus.FieldKeyLevel: logLevelFieldName,
logrus.FieldKeyMsg: logMsgFieldName,
logrus.FieldKeyLogrusError: logErrorFieldName,
logrus.FieldKeyFunc: logFuncFieldName,
logrus.FieldKeyFile: logFileFieldName,
},
}
}
logrus.SetFormatter(f)

return logger
}

Expand Down