[Feature Enhancement]: Complete Logging Implementation
Una pull request collegata è già stata integrata.
- #9 di @MasterJ93 — integrata
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 25/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- swift
- Ambito
- backend-api-design
Direzione di ricerca
Read the package areas for ATProtoKit, ATProtoTools, and ATProtoAdmin, then inspect the applyWrites() example in the issue as a guide to the requested logging points. Add logging across all three classes, including session and request failures and outcomes; completion means all three checklist items are covered. A linked pull request was merged, so check its changes and the current code before taking this on.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
No response
Pain points
The current implementation of ATProtoKit lacks a centralized logging mechanism, leading to several challenges, namely that debugging is much more difficult to deal with.
To solve this, SwiftLog will be integrated into the package. Furthermore, two logging backend implementations will be used: one that maps to Apple's unified Logger framework (for Apple platforms) and one that maps to the standard SwiftLog logger.
To be more specific, log events for the methods should be added as appropriate. As an example, take a look at applyWrites():
public func applyWrites(_ repositoryDID: String,
shouldValidate: Bool? = true,
writes: [ApplyWritesUnion],
swapCommit: String?) async throws {
guard session != nil,
let accessToken = session?.accessToken else {
throw ATRequestPrepareError.missingActiveSession
}
guard let sessionURL = session?.pdsURL,
let requestURL = URL(string: "\(sessionURL)/xrpc/com.atproto.repo.applyWrites") else {
throw ATRequestPrepareError.invalidRequestURL
}
let requestBody = RepoApplyWrites(
repositoryDID: repositoryDID,
shouldValidate: shouldValidate,
writes: writes,
swapCommit: swapCommit
)
do {
let request = APIClientService.createRequest(forRequest: requestURL,
andMethod: .post,
acceptValue: nil,
contentTypeValue: "application/json",
authorizationValue: "Bearer \(accessToken)")
try await APIClientService.sendRequest(request,
withEncodingBody: requestBody)
} catch {
throw error
}
}
Various places within the method can have log events, including:
- Within the first
guardstatement'selseblock, stating thatsessionoraccessTokendoesn't have a value. - After the
guardstatement which would show the value ofaccessToken(albeit, obfuscated). - Within the second
guardstatement'selseblock, stating that there's an invalid request URL, followed by aString(describing:)of the request URL. - After the
guardstatement, which would show the value ofrequestURL. - After
requestBody, which would show the values ofrequestBody. - After
request, which would show the value ofrequest. - After the
try awaitcode, which would say that the request has been successful. - Within the
catchblock, which gives an error log, followed by displaying the error itself.
This issue will focus on implementing log events to the ATProtoKit, ATProtoTools, and ATProtoAdmin classes. Future updates will deal with the remaining parts of the Swift package.
Considered Alternatives
No response
Is this a breaking change?
Yes
Additional Context
- Implement log events on all parts of the
ATProtoKitclass. - Implement log events on all parts of the
ATProtoAdminclass. - Implement log events on all parts of the
ATProtoToolsclass.
- Lingua principale
- Swift
- Stelle
- 226
- Fork
- 40
- Merge medio
- 5h 8m
- PR unite (30g)
- 3
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di MasterJ93/ATProtoKit
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
MasterJ93/ATProtoKit#344 ·
-
enhancement
Difficoltà 4/5 1-2 giorni Idoneità per principianti 52/100
MasterJ93/ATProtoKit#337 · 3 commenti ·
-
new feature
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
MasterJ93/ATProtoKit#321 · 1 commento ·
-
new feature
Difficoltà 4/5 3-5 giorni Idoneità per principianti 43/100
MasterJ93/ATProtoKit#320 · 1 commento ·
-
new feature
Difficoltà 4/5 1-2 giorni Idoneità per principianti 55/100
MasterJ93/ATProtoKit#316 · 1 commento ·
Tutte le issue di MasterJ93/ATProtoKit
Issue simili
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 67/100
I maintainer di solito rispondono entro 1 giorno
-
🎉 Add WoundAperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 77/100
jaywcjlove/awesome-mac#4357 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
-
Bug: on hover a tab's name in Cra stops ~16 pt short of Arc's, with 24 pt of air before the ✕Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
VictorKildahl/cra#243 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
OneBusAway/vehicle-positions#260 ·
I maintainer di solito rispondono entro 1 giorno