| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | package nginx_logimport (	"sync")// NginxLogCache represents a cached log entry from nginx configurationtype NginxLogCache struct {	Path string `json:"path"` // Path to the log file	Type string `json:"type"` // Type of log: "access" or "error"	Name string `json:"name"` // Name of the log file}var (	// logCache is the map to store all found log files	logCache   = make(map[string]*NginxLogCache)	cacheMutex sync.RWMutex)// AddLogPath adds a log path to the log cachefunc AddLogPath(path, logType, name string) {	cacheMutex.Lock()	defer cacheMutex.Unlock()	logCache[path] = &NginxLogCache{		Path: path,		Type: logType,		Name: name,	}}// GetAllLogPaths returns all cached log pathsfunc GetAllLogPaths(filters ...func(*NginxLogCache) bool) []*NginxLogCache {	cacheMutex.RLock()	defer cacheMutex.RUnlock()	result := make([]*NginxLogCache, 0, len(logCache))	for _, cache := range logCache {		flag := true		if len(filters) > 0 {			for _, filter := range filters {				if !filter(cache) {					flag = false					break				}			}		}		if flag {			result = append(result, cache)		}	}	return result}// ClearLogCache clears all entries in the log cachefunc ClearLogCache() {	cacheMutex.Lock()	defer cacheMutex.Unlock()	// Clear the cache	logCache = make(map[string]*NginxLogCache)}
 |