here İşte bir iç çözüm sözü edildiği gibi sistem, sizin için günlükleri döndürmek var. Başka bir goroutines'ten günlükleri aldığı bir kanalla günlük kaydı ve günlük rotasyonundan sorumlu tek bir goroutine sahip olmayı düşünebilirsiniz. Döndürülme zamanı geldiğinde, goroutine, diğer goroutines gelen gelen günlükleri kanalda sıralanır iken, günlüğü döndürecektir. Kayıt döndürme işlemi tamamlandıktan sonra kanaldaki her şeyi yok eder ve kayıt devam eder. çizgisinde
şey:
type Log struct {
log string
// other info you might want
}
// This will be your goroutine
func Logging(LogChannel chan Log) {
// assume logger creates/opens a file and prepares it for writing
logger := New(logger)
for {
// collect a log. Will also block until a log is available on the channel
log <- LogChannel
if timeToRotate() {
RotateLogFile(logger)
}
// write log
logger.Log(log)
}
}
DÜZENLEME: önceki kod günlük dosyası dönersem kontrol ettikten sonra engelleme çağrısı vardı. Günlük dosyası i https://github.com/natefinch/lumberjack ile iyi başarı elde ettik
Ben gerçek kullanıcı deneyimi ilginç olduğum @evanmcdonnal:
normal günlük sadece bunu ayarlamak için bir kod satırı ekleyin kullanmak ve kullanımı çok basit
. Sanırım insanlar binlerce günlük dosya ile aynı sorunları yaşadılar. Kesin uygulama önerebilir misiniz? –