Comments (8)
Did some quick googling...
slog
recommends using the Logger.LogAttrs
API for zero-allocation logging (instead of Logger.Log
).
Apparently there's interop between slog can use zap as a logging backend if a Handler
is provided. https://github.com/chanchal1987/zaphandler is an example.
from certmagic.
Since Caddy is the primary consumer of certmagic and the whole Caddy plugin ecosystem uses zap, it would be very difficult to change that at this point.
I could see a Caddy v3 causing us to change over, but I don't think we will take the effort to do that anytime soon.
from certmagic.
Actually, looks like zap added some compat in uber-go/zap#1246
from certmagic.
I guess the ideal situation is to have a way to create a zapcore.Core
that pipes output to a slog.Handler
and then create a *zap.Logger
from that Core
that will be passed to certmagic.
from certmagic.
I guess so. I don't know how interop between them looks like, I haven't looked into it. But that sounds reasonable for now.
from certmagic.
Are std libs lobs zero-allocation?
If they aren't, I don't think moving will have any performance benefit.
from certmagic.
For the user, it wouldn't be about performance but about interoperability.
For example, if I am starting a new project now, I will use slog
for my structured logging. It would be nice that if I need to configure certmagic
I can pass in my already existing logger.
I understand going all in on zap
before slog
was available, or even just in the interest of performance.
Thinking about this more, perhaps there is no need for certmagic and the rest of the Caddy ecosystem to change, there just needs to be an easy way to create a zap logger from slog
.
from certmagic.
Understood; but we can't impact the TLS server's performance like that -- logs that allocate would significantly reduce the performance of the server given how many logs we emit.
But, yeah, if what you're actually asking for is interop, then maybe a feature request for zap to integrate with slog in some way would be the best way to go. It wouldn't necessarily be as fast of course, but then CertMagic wouldn't have to change and you could still use your slog with CertMagic.
I'll close this but we can reopen if something becomes actionable for us 👍
from certmagic.
Related Issues (20)
- Certificate Import HOT 16
- Add proxy option for OCSP stapling requests HOT 6
- Ability to disable logs with `no information found to solve challenge for identifier` HOT 3
- Config option for what the Caddy ask endpoint protects / DecisionFunc HOT 2
- Can DNS be used alongside ALPN? HOT 5
- How to manually issue a certificate HOT 3
- Is FallbackServerName still experimental? HOT 3
- Question: How to issue wildcard certificates rather than exact subject name in OnDemand? HOT 5
- FileStorage Delete doesn't delete non-empty directories HOT 7
- Implement ARI HOT 2
- How to disable logs? HOT 1
- Panic on ZeroSSL API Issuer when no `Storage` is set HOT 3
- Looking for cause and solution to "config returned for certificate is not nil and points to different cache" error returned in cache.go HOT 3
- Allow Certmagic to generate 'next' private key to allow safe TLSA/DANE deployment and rollover HOT 5
- Use posix file advisory locks on supported platforms HOT 1
- Do calls to storage Load need to be Lock protected? HOT 5
- Sometimes generating 33 ARI requests in a single second HOT 7
- Allow specific issuers for specific on-demand domains HOT 7
- Make field names consistent
- Corrupted metadata JSON files caused by bug #297 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from certmagic.