Skip to content

Commit 8ea0984

Browse files
committed
Simplify LoggerClient implementation
1 parent 93d565a commit 8ea0984

File tree

13 files changed

+55
-66
lines changed

13 files changed

+55
-66
lines changed

Sources/App/Commands/Alerting.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,10 @@ enum Alerting {
4242
}
4343

4444
func run(using context: CommandContext, signature: Signature) async throws {
45+
prepareDependencies {
46+
$0.logger = Logger(component: "alerting")
47+
}
4548
@Dependency(\.logger) var logger
46-
logger.set(to: Logger(component: "alerting"))
4749

4850
logger.info("Running alerting...")
4951

Sources/App/Commands/Analyze.swift

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,13 @@ enum Analyze {
2828
var help: String { "Run package analysis (fetching git repository and inspecting content)" }
2929

3030
func run(using context: CommandContext, signature: SPICommand.Signature) async throws {
31+
prepareDependencies {
32+
$0.logger = Logger(component: "analyze")
33+
}
34+
@Dependency(\.logger) var logger
35+
3136
let client = context.application.client
3237
let db = context.application.db
33-
@Dependency(\.logger) var logger
34-
logger.set(to: Logger(component: "analyze"))
3538

3639
Analyze.resetMetrics()
3740

@@ -251,7 +254,7 @@ extension Analyze {
251254
attributes: nil)
252255
} catch {
253256
let error = AppError.genericError(nil, "Failed to create checkouts directory: \(error.localizedDescription)")
254-
logger.logger.report(error: error)
257+
logger.report(error: error)
255258
}
256259
}
257260

Sources/App/Commands/Ingestion.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,13 @@ enum Ingestion {
8282
var help: String { "Run package ingestion (fetching repository metadata)" }
8383

8484
func run(using context: CommandContext, signature: SPICommand.Signature) async {
85+
prepareDependencies {
86+
$0.logger = Logger(component: "ingest")
87+
}
88+
@Dependency(\.logger) var logger
89+
8590
let client = context.application.client
8691
let db = context.application.db
87-
@Dependency(\.logger) var logger
88-
logger.set(to: Logger(component: "ingest"))
8992

9093
Self.resetMetrics()
9194

Sources/App/Commands/ReAnalyzeVersions.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,15 @@ enum ReAnalyzeVersions {
4343
var help: String { "Run version re-analysis" }
4444

4545
func run(using context: CommandContext, signature: Signature) async throws {
46+
prepareDependencies {
47+
$0.logger = Logger(component: "re-analyze-versions")
48+
}
49+
@Dependency(\.logger) var logger
50+
4651
let limit = signature.limit ?? defaultLimit
4752

4853
let client = context.application.client
4954
let db = context.application.db
50-
@Dependency(\.logger) var logger
51-
logger.set(to: Logger(component: "re-analyze-versions"))
5255

5356
@Dependency(\.date.now) var now
5457
if let id = signature.packageId {

Sources/App/Commands/Reconcile.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,23 +23,23 @@ struct ReconcileCommand: AsyncCommand {
2323
var help: String { "Reconcile package list with server" }
2424

2525
func run(using context: CommandContext, signature: Signature) async throws {
26+
prepareDependencies{
27+
$0.logger = Logger(component: "reconcile")
28+
}
2629
@Dependency(\.logger) var logger
27-
logger.set(to: Logger(component: "reconcile"))
2830

2931
logger.info("Reconciling...")
3032

3133
do {
32-
try await reconcile(client: context.application.client,
33-
database: context.application.db)
34+
try await reconcile(client: context.application.client, database: context.application.db)
3435
} catch {
3536
logger.error("\(error)")
3637
}
3738

3839
logger.info("done.")
3940

4041
do {
41-
try await AppMetrics.push(client: context.application.client,
42-
jobName: "reconcile")
42+
try await AppMetrics.push(client: context.application.client, jobName: "reconcile")
4343
} catch {
4444
logger.warning("\(error)")
4545
}

Sources/App/Commands/TriggerBuilds.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,10 @@ struct TriggerBuildsCommand: AsyncCommand {
5555
}
5656

5757
func run(using context: CommandContext, signature: Signature) async throws {
58+
prepareDependencies {
59+
$0.logger = Logger(component: "trigger-builds")
60+
}
5861
@Dependency(\.logger) var logger
59-
logger.set(to: Logger(component: "trigger-builds"))
6062

6163
Self.resetMetrics()
6264

Sources/App/Core/Dependencies/LoggerClient.swift

Lines changed: 6 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -13,55 +13,20 @@
1313
// limitations under the License.
1414

1515
import Dependencies
16-
import DependenciesMacros
16+
import IssueReporting
1717
import Logging
18-
import Synchronization
1918

2019

21-
@DependencyClient
22-
struct LoggerClient {
23-
var log: @Sendable (_ level: Logging.Logger.Level, Logging.Logger.Message) -> Void
24-
var set: @Sendable (_ to: Logging.Logger) -> Void
25-
}
26-
27-
28-
extension LoggerClient {
29-
func critical(_ message: Logging.Logger.Message) { log(.critical, message) }
30-
func debug(_ message: Logging.Logger.Message) { log(.debug, message) }
31-
func error(_ message: Logging.Logger.Message) { log(.error, message) }
32-
func info(_ message: Logging.Logger.Message) { log(.info, message) }
33-
func warning(_ message: Logging.Logger.Message) { log(.warning, message) }
34-
func trace(_ message: Logging.Logger.Message) { log(.trace, message) }
35-
func report(error: Error, file: String = #fileID, function: String = #function, line: UInt = #line) {
36-
logger.report(error: error, file: file, function: function, line: line)
20+
private enum LoggerClient: DependencyKey {
21+
static var liveValue: Logger {
22+
reportIssue("The default logger is being used. Override this dependency in the entry point of your app.")
23+
return Logging.Logger(label: "default")
3724
}
38-
var logger: Logging.Logger { Self._logger.withLock { $0 } }
39-
}
40-
41-
42-
extension LoggerClient: DependencyKey {
43-
static var liveValue: Self {
44-
.init(
45-
log: { level, message in
46-
_logger.withLock { $0.log(level: level, message) }
47-
},
48-
set: { logger in
49-
_logger.withLock { $0 = logger }
50-
}
51-
)
52-
}
53-
54-
private static let _logger = Mutex(Logging.Logger(component: "default"))
55-
}
56-
57-
58-
extension LoggerClient: TestDependencyKey {
59-
static var testValue: Self { liveValue }
6025
}
6126

6227

6328
extension DependencyValues {
64-
var logger: LoggerClient {
29+
public var logger: Logger {
6530
get { self[LoggerClient.self] }
6631
set { self[LoggerClient.self] = newValue }
6732
}

Sources/App/Core/Dependencies/ShellClient.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ extension ShellClient: DependencyKey {
4242
run: { command, path in
4343
@Dependency(\.logger) var logger
4444
do {
45-
let res = try await ShellOut.shellOut(to: command, at: path, logger: logger.logger)
45+
let res = try await ShellOut.shellOut(to: command, at: path, logger: logger)
4646
if !res.stderr.isEmpty {
4747
logger.warning("stderr: \(res.stderr)")
4848
}

Sources/App/configure.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,7 @@ public func configure(_ app: Application) async throws -> String {
2727
let _ = Bundle(path: "/Applications/InjectionIII.app/Contents/Resources/macOSInjection.bundle")?.load()
2828
#endif
2929

30-
@Dependency(\.logger) var logger
3130
app.logger.component = "server"
32-
logger.set(to: app.logger)
3331

3432
// It will be tempting to uncomment/re-add these lines in the future. We should not enable
3533
// server-side compression as long as we pass requests through Cloudflare, which compresses

Sources/Run/entrypoint.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,11 @@
1313
// limitations under the License.
1414

1515
import App
16+
import Dependencies
1617
import Logging
1718
import Vapor
1819

20+
1921
@main
2022
enum Entrypoint {
2123
static func main() async throws {
@@ -24,6 +26,10 @@ enum Entrypoint {
2426

2527
let app = try await Application.make(env)
2628

29+
prepareDependencies {
30+
$0.logger = app.logger
31+
}
32+
2733
do {
2834
try await configure(app)
2935
} catch {

0 commit comments

Comments
 (0)