summaryrefslogtreecommitdiff
path: root/internal/log/std.go
diff options
context:
space:
mode:
authorLibravatar kim <grufwub@gmail.com>2025-09-07 14:47:45 +0200
committerLibravatar kim <gruf@noreply.codeberg.org>2025-09-07 14:47:45 +0200
commit19784e381bfe6e0aa44cd03928e0ce74edda14eb (patch)
tree8d63774bb09ee3be26f68766a02d97d4c21be6e4 /internal/log/std.go
parent[bugfix] fix lo paging value not always being set (#4407) (diff)
downloadgotosocial-19784e381bfe6e0aa44cd03928e0ce74edda14eb.tar.xz
[performance] more logging tweaks (#4415)
- reduces number of necessary function calls by moving log level checking out of the uninlineable `logf(...)` function and into each of its caller (which are all inlined). this in turn means the log level check is performed in-situ wherever a call to `log.Debug(...)` (etc) is made, reduce unnecessary calls when a certain log level is disabled. - sets the http.Server{}.ErrorLog to output to our internal logging package (which in turn ensures it gets wrapped in either our logfmt or json log formatting) Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4415 Co-authored-by: kim <grufwub@gmail.com> Co-committed-by: kim <grufwub@gmail.com>
Diffstat (limited to 'internal/log/std.go')
-rw-r--r--internal/log/std.go43
1 files changed, 43 insertions, 0 deletions
diff --git a/internal/log/std.go b/internal/log/std.go
new file mode 100644
index 000000000..47adec128
--- /dev/null
+++ b/internal/log/std.go
@@ -0,0 +1,43 @@
+// GoToSocial
+// Copyright (C) GoToSocial Authors admin@gotosocial.org
+// SPDX-License-Identifier: AGPL-3.0-or-later
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+package log
+
+import (
+ "log"
+
+ "codeberg.org/gruf/go-kv/v2"
+)
+
+// NewStdLogger returns a new standard library
+// log.Logger instance that will write output
+// to this library's logging functions at 'lvl'.
+func NewStdLogger(lvl LEVEL) *log.Logger {
+ return log.New(stdLogWriter{lvl: lvl}, "", 0)
+}
+
+type stdLogWriter struct{ lvl LEVEL }
+
+func (w stdLogWriter) Write(b []byte) (int, error) {
+ if w.lvl <= loglvl {
+ logf(nil, w.lvl, kv.Fields{
+ {K: "caller", V: Caller(5)},
+ {K: "msg", V: b},
+ }, "")
+ }
+ return len(b), nil
+}