Major features: - One-to-many correlation mode (Keep-Alive) for HTTP connections - Dynamic TTL for network events with reset on each correlation - Separate configurable buffer sizes for HTTP and network events - SIGHUP signal handling for log rotation without service restart - FileSink.Reopen() method for log file rotation - logrotate configuration included in RPM - ExecReload added to systemd service Configuration changes: - New YAML structure with nested sections (time_window, orphan_policy, matching, buffers, ttl) - Backward compatibility maintained for deprecated fields Packaging: - RPM version 1.1.0 with logrotate config - Updated spec file and changelog - All distributions: el8, el9, el10 Tests: - New tests for Keep-Alive mode and TTL reset - Updated mocks with Reopen() interface method Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
53 lines
1.5 KiB
Go
53 lines
1.5 KiB
Go
package ports
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/logcorrelator/logcorrelator/internal/domain"
|
|
)
|
|
|
|
// EventSource defines the interface for log sources.
|
|
type EventSource interface {
|
|
// Start begins reading events and sending them to the channel.
|
|
// Returns an error if the source cannot be started.
|
|
Start(ctx context.Context, eventChan chan<- *domain.NormalizedEvent) error
|
|
|
|
// Stop gracefully stops the source.
|
|
Stop() error
|
|
|
|
// Name returns the source name.
|
|
Name() string
|
|
}
|
|
|
|
// CorrelatedLogSink defines the interface for correlated log destinations.
|
|
type CorrelatedLogSink interface {
|
|
// Write sends a correlated log to the sink.
|
|
Write(ctx context.Context, log domain.CorrelatedLog) error
|
|
|
|
// Flush flushes any buffered logs.
|
|
Flush(ctx context.Context) error
|
|
|
|
// Close closes the sink.
|
|
Close() error
|
|
|
|
// Name returns the sink name.
|
|
Name() string
|
|
|
|
// Reopen closes and reopens the sink (for log rotation on SIGHUP).
|
|
// Optional: only FileSink implements this.
|
|
Reopen() error
|
|
}
|
|
|
|
// CorrelationProcessor defines the interface for the correlation service.
|
|
// This allows for easier testing and alternative implementations.
|
|
type CorrelationProcessor interface {
|
|
// ProcessEvent processes an incoming event and returns correlated logs.
|
|
ProcessEvent(event *domain.NormalizedEvent) []domain.CorrelatedLog
|
|
|
|
// Flush forces emission of remaining buffered events.
|
|
Flush() []domain.CorrelatedLog
|
|
|
|
// GetBufferSizes returns the current buffer sizes for monitoring.
|
|
GetBufferSizes() (int, int)
|
|
}
|