forked from Plemya-x/ALR
		
	Initial commit
This commit is contained in:
		
							
								
								
									
										29
									
								
								pkg/loggerctx/log.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								pkg/loggerctx/log.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
			
		||||
package loggerctx
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
 | 
			
		||||
	"go.elara.ws/logger"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// loggerCtxKey is used as the context key for loggers
 | 
			
		||||
type loggerCtxKey struct{}
 | 
			
		||||
 | 
			
		||||
// With returns a copy of ctx containing log
 | 
			
		||||
func With(ctx context.Context, log logger.Logger) context.Context {
 | 
			
		||||
	return context.WithValue(ctx, loggerCtxKey{}, log)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// From attempts to get a logger from ctx. If ctx doesn't
 | 
			
		||||
// contain a logger, it returns a nop logger.
 | 
			
		||||
func From(ctx context.Context) logger.Logger {
 | 
			
		||||
	if val := ctx.Value(loggerCtxKey{}); val != nil {
 | 
			
		||||
		if log, ok := val.(logger.Logger); ok && log != nil {
 | 
			
		||||
			return log
 | 
			
		||||
		} else {
 | 
			
		||||
			return logger.NewNop()
 | 
			
		||||
		}
 | 
			
		||||
	} else {
 | 
			
		||||
		return logger.NewNop()
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user