From e520c45032ec4d1c80ac5cd2248727cd72b92dc8 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Thu, 29 Sep 2022 15:19:08 -0500 Subject: [PATCH] Change visibility of system error messages included in logs so that they are useful in production --- .../Sources/Account/AccountMetadataFile.swift | 2 +- Account/Sources/Account/AccountSyncError.swift | 2 +- .../CloudKitArticlesZoneDelegate.swift | 4 ++-- .../CloudKitReceiveStatusOperation.swift | 2 +- .../CloudKit/CloudKitSendStatusOperation.swift | 4 ++-- .../Account/Feedly/FeedlyAccountDelegate.swift | 8 ++++---- .../FeedlyDownloadArticlesOperation.swift | 2 +- ...lyFetchIdsForMissingArticlesOperation.swift | 2 +- .../FeedlyGetCollectionsOperation.swift | 2 +- .../Operations/FeedlyGetEntriesOperation.swift | 2 +- .../FeedlyGetStreamContentsOperation.swift | 2 +- .../FeedlyGetStreamIdsOperation.swift | 2 +- .../FeedlyGetUpdatedArticleIdsOperation.swift | 2 +- .../Operations/FeedlyLogoutOperation.swift | 2 +- .../Operations/FeedlySyncAllOperation.swift | 2 +- .../LocalAccount/LocalAccountDelegate.swift | 2 +- .../NewsBlurAccountDelegate+Internal.swift | 6 +++--- .../NewsBlur/NewsBlurAccountDelegate.swift | 10 +++++----- Account/Sources/Account/OPMLFile.swift | 6 +++--- .../ReaderAPI/ReaderAPIAccountDelegate.swift | 18 +++++++++--------- .../Sources/Account/WebFeedMetadataFile.swift | 2 +- .../xcshareddata/swiftpm/Package.resolved | 4 ++-- 22 files changed, 44 insertions(+), 44 deletions(-) diff --git a/Account/Sources/Account/AccountMetadataFile.swift b/Account/Sources/Account/AccountMetadataFile.swift index 4f52d2728..644f7984a 100644 --- a/Account/Sources/Account/AccountMetadataFile.swift +++ b/Account/Sources/Account/AccountMetadataFile.swift @@ -48,7 +48,7 @@ final class AccountMetadataFile: Logging { let data = try encoder.encode(account.metadata) try data.write(to: fileURL) } catch let error { - logger.error("Save to disk failed: \(error.localizedDescription)") + logger.error("Save to disk failed: \(error.localizedDescription, privacy: .public)") } } diff --git a/Account/Sources/Account/AccountSyncError.swift b/Account/Sources/Account/AccountSyncError.swift index ee90b8806..6f7148700 100644 --- a/Account/Sources/Account/AccountSyncError.swift +++ b/Account/Sources/Account/AccountSyncError.swift @@ -21,7 +21,7 @@ public struct AccountSyncError: Logging { init(account: Account, error: Error) { self.account = account self.error = error - AccountSyncError.logger.error("Account Sync Error: \(error.localizedDescription)") + AccountSyncError.logger.error("Account Sync Error: \(error.localizedDescription, privacy: .public)") } } diff --git a/Account/Sources/Account/CloudKit/CloudKitArticlesZoneDelegate.swift b/Account/Sources/Account/CloudKit/CloudKitArticlesZoneDelegate.swift index 825de657b..3fae6a5db 100644 --- a/Account/Sources/Account/CloudKit/CloudKitArticlesZoneDelegate.swift +++ b/Account/Sources/Account/CloudKit/CloudKitArticlesZoneDelegate.swift @@ -46,12 +46,12 @@ class CloudKitArticlesZoneDelegate: CloudKitZoneDelegate, Logging { } case .failure(let error): - self.logger.error("Error occurred getting pending starred records: \(error.localizedDescription)") + self.logger.error("Error occurred getting pending starred records: \(error.localizedDescription, privacy: .public)") completion(.failure(CloudKitZoneError.unknown)) } } case .failure(let error): - self.logger.error("Error occurred getting pending read status records: \(error.localizedDescription)") + self.logger.error("Error occurred getting pending read status records: \(error.localizedDescription, privacy: .public)") completion(.failure(CloudKitZoneError.unknown)) } diff --git a/Account/Sources/Account/CloudKit/CloudKitReceiveStatusOperation.swift b/Account/Sources/Account/CloudKit/CloudKitReceiveStatusOperation.swift index 5892b7164..889d2f183 100644 --- a/Account/Sources/Account/CloudKit/CloudKitReceiveStatusOperation.swift +++ b/Account/Sources/Account/CloudKit/CloudKitReceiveStatusOperation.swift @@ -38,7 +38,7 @@ class CloudKitReceiveStatusOperation: MainThreadOperation, Logging { case .success: self.operationDelegate?.operationDidComplete(self) case .failure(let error): - self.logger.debug("Receive status error: \(error.localizedDescription)") + self.logger.debug("Receive status error: \(error.localizedDescription, privacy: .public)") self.operationDelegate?.cancelOperation(self) } } diff --git a/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift b/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift index 021a73b72..def4329ce 100644 --- a/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift +++ b/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift @@ -145,7 +145,7 @@ private extension CloudKitSendStatusOperation { case .failure(let error): self.database.resetSelectedForProcessing(syncStatuses.map({ $0.articleID })) { _ in self.processAccountError(account, error) - self.logger.error("Send article status modify articles error: \(error.localizedDescription)") + self.logger.error("Send article status modify articles error: \(error.localizedDescription, privacy: .public)") completion(true) } } @@ -159,7 +159,7 @@ private extension CloudKitSendStatusOperation { processWithArticles(articles) case .failure(let databaseError): self.database.resetSelectedForProcessing(syncStatuses.map({ $0.articleID })) { _ in - self.logger.error("Send article status fetch articles error: \(databaseError.localizedDescription)") + self.logger.error("Send article status fetch articles error: \(databaseError.localizedDescription, privacy: .public)") completion(true) } } diff --git a/Account/Sources/Account/Feedly/FeedlyAccountDelegate.swift b/Account/Sources/Account/Feedly/FeedlyAccountDelegate.swift index 1c8bda76c..d8e9a37de 100644 --- a/Account/Sources/Account/Feedly/FeedlyAccountDelegate.swift +++ b/Account/Sources/Account/Feedly/FeedlyAccountDelegate.swift @@ -150,12 +150,12 @@ final class FeedlyAccountDelegate: AccountDelegate, Logging { case .success: completion?(.success(())) case .failure(let error): - self.logger.error("Failed to refresh article status for account \(String(describing: account.type)): \(error.localizedDescription)") + self.logger.error("Failed to refresh article status for account \(String(describing: account.type)): \(error.localizedDescription, privacy: .public)") completion?(.failure(error)) } } case .failure(let error): - self.logger.error("Failed to send article status for account \(String(describing: account.type)): \(error.localizedDescription)") + self.logger.error("Failed to send article status for account \(String(describing: account.type)): \(error.localizedDescription, privacy: .public)") completion?(.failure(error)) } } @@ -232,7 +232,7 @@ final class FeedlyAccountDelegate: AccountDelegate, Logging { completion(.success(())) } case .failure(let error): - self.logger.error("Import OPML failed: \(error.localizedDescription)") + self.logger.error("Import OPML failed: \(error.localizedDescription, privacy: .public)") self.refreshProgress.completeTask() self.isOPMLImportInProgress = false DispatchQueue.main.async { @@ -490,7 +490,7 @@ final class FeedlyAccountDelegate: AccountDelegate, Logging { case .success: break case .failure(let error): - self.logger.error("Restore folder feed error: \(error.localizedDescription)") + self.logger.error("Restore folder feed error: \(error.localizedDescription, privacy: .public)") } } diff --git a/Account/Sources/Account/Feedly/Operations/FeedlyDownloadArticlesOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlyDownloadArticlesOperation.swift index 3e497468f..975d9c86e 100644 --- a/Account/Sources/Account/Feedly/Operations/FeedlyDownloadArticlesOperation.swift +++ b/Account/Sources/Account/Feedly/Operations/FeedlyDownloadArticlesOperation.swift @@ -84,7 +84,7 @@ extension FeedlyDownloadArticlesOperation: FeedlyOperationDelegate { assert(Thread.isMainThread) // Having this log is useful for debugging missing required JSON keys in the response from Feedly, for example. - self.logger.debug("\(String(describing: operation)) failed with error: \(error.localizedDescription)") + self.logger.debug("\(String(describing: operation)) failed with error: \(error.localizedDescription, privacy: .public)") cancel() } diff --git a/Account/Sources/Account/Feedly/Operations/FeedlyFetchIdsForMissingArticlesOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlyFetchIdsForMissingArticlesOperation.swift index a9f53f633..90cbdde50 100644 --- a/Account/Sources/Account/Feedly/Operations/FeedlyFetchIdsForMissingArticlesOperation.swift +++ b/Account/Sources/Account/Feedly/Operations/FeedlyFetchIdsForMissingArticlesOperation.swift @@ -27,7 +27,7 @@ final class FeedlyFetchIdsForMissingArticlesOperation: FeedlyOperation, FeedlyEn self.didFinish() case .failure(let error): - self.logger.error("Failed to fetch articleIDs: \(error.localizedDescription).") + self.logger.error("Failed to fetch articleIDs: \(error.localizedDescription, privacy: .public).") self.didFinish(with: error) } } diff --git a/Account/Sources/Account/Feedly/Operations/FeedlyGetCollectionsOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlyGetCollectionsOperation.swift index f6feec0a4..2e48da7a7 100644 --- a/Account/Sources/Account/Feedly/Operations/FeedlyGetCollectionsOperation.swift +++ b/Account/Sources/Account/Feedly/Operations/FeedlyGetCollectionsOperation.swift @@ -35,7 +35,7 @@ final class FeedlyGetCollectionsOperation: FeedlyOperation, FeedlyCollectionProv self.didFinish() case .failure(let error): - self.logger.error("Unable to request collections: \(error.localizedDescription).") + self.logger.error("Unable to request collections: \(error.localizedDescription, privacy: .public).") self.didFinish(with: error) } } diff --git a/Account/Sources/Account/Feedly/Operations/FeedlyGetEntriesOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlyGetEntriesOperation.swift index 2cf78e8b1..e6ce474f3 100644 --- a/Account/Sources/Account/Feedly/Operations/FeedlyGetEntriesOperation.swift +++ b/Account/Sources/Account/Feedly/Operations/FeedlyGetEntriesOperation.swift @@ -60,7 +60,7 @@ final class FeedlyGetEntriesOperation: FeedlyOperation, FeedlyEntryProviding, Fe self.didFinish() case .failure(let error): - self.logger.error("Unable to get entries: \(error.localizedDescription)") + self.logger.error("Unable to get entries: \(error.localizedDescription, privacy: .public)") self.didFinish(with: error) } } diff --git a/Account/Sources/Account/Feedly/Operations/FeedlyGetStreamContentsOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlyGetStreamContentsOperation.swift index f5bd51fb4..2add9d7e7 100644 --- a/Account/Sources/Account/Feedly/Operations/FeedlyGetStreamContentsOperation.swift +++ b/Account/Sources/Account/Feedly/Operations/FeedlyGetStreamContentsOperation.swift @@ -106,7 +106,7 @@ final class FeedlyGetStreamContentsOperation: FeedlyOperation, FeedlyEntryProvid self.didFinish() case .failure(let error): - self.logger.error("Unable to get stream contents: \(error.localizedDescription)") + self.logger.error("Unable to get stream contents: \(error.localizedDescription, privacy: .public)") self.didFinish(with: error) } } diff --git a/Account/Sources/Account/Feedly/Operations/FeedlyGetStreamIdsOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlyGetStreamIdsOperation.swift index 2761d9e13..04aac1737 100644 --- a/Account/Sources/Account/Feedly/Operations/FeedlyGetStreamIdsOperation.swift +++ b/Account/Sources/Account/Feedly/Operations/FeedlyGetStreamIdsOperation.swift @@ -55,7 +55,7 @@ final class FeedlyGetStreamIdsOperation: FeedlyOperation, FeedlyEntryIdentifierP self.didFinish() case .failure(let error): - self.logger.error("Unable to get stream ids: \(error.localizedDescription)") + self.logger.error("Unable to get stream ids: \(error.localizedDescription, privacy: .public)") self.didFinish(with: error) } } diff --git a/Account/Sources/Account/Feedly/Operations/FeedlyGetUpdatedArticleIdsOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlyGetUpdatedArticleIdsOperation.swift index 0520d910b..bc6fa1a7f 100644 --- a/Account/Sources/Account/Feedly/Operations/FeedlyGetUpdatedArticleIdsOperation.swift +++ b/Account/Sources/Account/Feedly/Operations/FeedlyGetUpdatedArticleIdsOperation.swift @@ -72,7 +72,7 @@ class FeedlyGetUpdatedArticleIdsOperation: FeedlyOperation, FeedlyEntryIdentifie getStreamIds(continuation) case .failure(let error): - self.logger.error("Error getting FeedlyStreamIds: \(error.localizedDescription).") + self.logger.error("Error getting FeedlyStreamIds: \(error.localizedDescription, privacy: .public).") didFinish(with: error) } } diff --git a/Account/Sources/Account/Feedly/Operations/FeedlyLogoutOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlyLogoutOperation.swift index f4429fc03..c878db9d7 100644 --- a/Account/Sources/Account/Feedly/Operations/FeedlyLogoutOperation.swift +++ b/Account/Sources/Account/Feedly/Operations/FeedlyLogoutOperation.swift @@ -42,7 +42,7 @@ final class FeedlyLogoutOperation: FeedlyOperation, Logging { didFinish() case .failure(let error): - self.logger.error("Logout failed because: \(error.localizedDescription)") + self.logger.error("Logout failed because: \(error.localizedDescription, privacy: .public)") didFinish(with: error) } } diff --git a/Account/Sources/Account/Feedly/Operations/FeedlySyncAllOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlySyncAllOperation.swift index 452e01d11..8481e9b21 100644 --- a/Account/Sources/Account/Feedly/Operations/FeedlySyncAllOperation.swift +++ b/Account/Sources/Account/Feedly/Operations/FeedlySyncAllOperation.swift @@ -158,7 +158,7 @@ extension FeedlySyncAllOperation: FeedlyOperationDelegate { assert(Thread.isMainThread) // Having this log is useful for debugging missing required JSON keys in the response from Feedly, for example. - logger.debug("\(String(describing: operation)) failed with error: \(error.localizedDescription).") + logger.debug("\(String(describing: operation)) failed with error: \(error.localizedDescription, privacy: .public).") syncCompletionHandler?(.failure(error)) syncCompletionHandler = nil diff --git a/Account/Sources/Account/LocalAccount/LocalAccountDelegate.swift b/Account/Sources/Account/LocalAccount/LocalAccountDelegate.swift index 9ea2d1f25..d19608c36 100644 --- a/Account/Sources/Account/LocalAccount/LocalAccountDelegate.swift +++ b/Account/Sources/Account/LocalAccount/LocalAccountDelegate.swift @@ -65,7 +65,7 @@ final class LocalAccountDelegate: AccountDelegate, Logging { group.leave() } case .failure(let error): - self.logger.error("Feed Provided refresh error: \(error.localizedDescription)") + self.logger.error("Feed Provided refresh error: \(error.localizedDescription, privacy: .public)") feedProviderError = error self.refreshProgress.completeTask() group.leave() diff --git a/Account/Sources/Account/NewsBlur/Internals/NewsBlurAccountDelegate+Internal.swift b/Account/Sources/Account/NewsBlur/Internals/NewsBlurAccountDelegate+Internal.swift index 23d1d8483..1463cc546 100644 --- a/Account/Sources/Account/NewsBlur/Internals/NewsBlurAccountDelegate+Internal.swift +++ b/Account/Sources/Account/NewsBlur/Internals/NewsBlurAccountDelegate+Internal.swift @@ -300,7 +300,7 @@ extension NewsBlurAccountDelegate { group.leave() case .failure(let error): errorOccurred = true - self.logger.error("Story status sync call failed: \(error.localizedDescription)") + self.logger.error("Story status sync call failed: \(error.localizedDescription, privacy: .public)") self.database.resetSelectedForProcessing(storyHashGroup.map { String($0) } ) group.leave() } @@ -359,7 +359,7 @@ extension NewsBlurAccountDelegate { case .success(let pendingArticleIDs): process(pendingArticleIDs) case .failure(let error): - self.logger.error("Sync story read status failed: \(error.localizedDescription)") + self.logger.error("Sync story read status failed: \(error.localizedDescription, privacy: .public)") } } } @@ -407,7 +407,7 @@ extension NewsBlurAccountDelegate { case .success(let pendingArticleIDs): process(pendingArticleIDs) case .failure(let error): - self.logger.error("Sync story starred status failed: \(error.localizedDescription)") + self.logger.error("Sync story starred status failed: \(error.localizedDescription, privacy: .public)") } } } diff --git a/Account/Sources/Account/NewsBlur/NewsBlurAccountDelegate.swift b/Account/Sources/Account/NewsBlur/NewsBlurAccountDelegate.swift index 0281c1b03..37966a2af 100644 --- a/Account/Sources/Account/NewsBlur/NewsBlurAccountDelegate.swift +++ b/Account/Sources/Account/NewsBlur/NewsBlurAccountDelegate.swift @@ -217,7 +217,7 @@ final class NewsBlurAccountDelegate: AccountDelegate, Logging { } case .failure(let error): errorOccurred = true - self.logger.error("Retrieving unread stories failed: \(error.localizedDescription)") + self.logger.error("Retrieving unread stories failed: \(error.localizedDescription, privacy: .public)") group.leave() } } @@ -231,7 +231,7 @@ final class NewsBlurAccountDelegate: AccountDelegate, Logging { } case .failure(let error): errorOccurred = true - self.logger.error("Retrieving starred stories failed: \(error.localizedDescription)") + self.logger.error("Retrieving starred stories failed: \(error.localizedDescription, privacy: .public)") group.leave() } } @@ -293,7 +293,7 @@ final class NewsBlurAccountDelegate: AccountDelegate, Logging { } case .failure(let error): errorOccurred = true - self.logger.error("Refreshing missing stories failed: \(error.localizedDescription)") + self.logger.error("Refreshing missing stories failed: \(error.localizedDescription, privacy: .public)") group.leave() } } @@ -565,12 +565,12 @@ final class NewsBlurAccountDelegate: AccountDelegate, Logging { case .success: break case .failure(let error): - self.logger.error("Restore folder feed error: \(error.localizedDescription)") + self.logger.error("Restore folder feed error: \(error.localizedDescription, privacy: .public)") } } } case .failure(let error): - self.logger.error("Restore folder feed error: \(error.localizedDescription)") + self.logger.error("Restore folder feed error: \(error.localizedDescription, privacy: .public)") } } diff --git a/Account/Sources/Account/OPMLFile.swift b/Account/Sources/Account/OPMLFile.swift index c461c6f33..a5558c138 100644 --- a/Account/Sources/Account/OPMLFile.swift +++ b/Account/Sources/Account/OPMLFile.swift @@ -48,7 +48,7 @@ final class OPMLFile: Logging { do { try opmlDocumentString.write(to: fileURL, atomically: true, encoding: .utf8) } catch let error { - logger.error("OPML save to disk failed: \(error.localizedDescription)") + logger.error("OPML save to disk failed: \(error.localizedDescription, privacy: .public)") } } @@ -73,7 +73,7 @@ private extension OPMLFile { do { fileData = try Data(contentsOf: fileURL) } catch { - logger.error("OPML read from disk failed: \(error.localizedDescription)") + logger.error("OPML read from disk failed: \(error.localizedDescription, privacy: .public)") } return fileData @@ -86,7 +86,7 @@ private extension OPMLFile { do { opmlDocument = try RSOPMLParser.parseOPML(with: parserData) } catch { - logger.error("OPML Import failed: \(error.localizedDescription)") + logger.error("OPML Import failed: \(error.localizedDescription, privacy: .public)") return nil } diff --git a/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift b/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift index 2182fb396..469a04532 100644 --- a/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift +++ b/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift @@ -256,7 +256,7 @@ final class ReaderAPIAccountDelegate: AccountDelegate, Logging { } case .failure(let error): errorOccurred = true - self.logger.info("Retrieving unread entries failed: \(error.localizedDescription)") + self.logger.info("Retrieving unread entries failed: \(error.localizedDescription, privacy: .public)") group.leave() } @@ -271,7 +271,7 @@ final class ReaderAPIAccountDelegate: AccountDelegate, Logging { } case .failure(let error): errorOccurred = true - self.logger.info("Retrieving starred entries failed: \(error.localizedDescription)") + self.logger.info("Retrieving starred entries failed: \(error.localizedDescription, privacy: .public)") group.leave() } @@ -340,7 +340,7 @@ final class ReaderAPIAccountDelegate: AccountDelegate, Logging { self.clearFolderRelationship(for: feed, folderExternalID: folder.externalID) } case .failure(let error): - self.logger.error("Remove feed error: \(error.localizedDescription)") + self.logger.error("Remove feed error: \(error.localizedDescription, privacy: .public)") } } } @@ -359,7 +359,7 @@ final class ReaderAPIAccountDelegate: AccountDelegate, Logging { account.clearWebFeedMetadata(feed) } case .failure(let error): - self.logger.error("Remove feed error: \(error.localizedDescription)") + self.logger.error("Remove feed error: \(error.localizedDescription, privacy: .public)") } } @@ -591,7 +591,7 @@ final class ReaderAPIAccountDelegate: AccountDelegate, Logging { case .success: break case .failure(let error): - self.logger.error("Restore folder feed error: \(error.localizedDescription)") + self.logger.error("Restore folder feed error: \(error.localizedDescription, privacy: .public)") } } @@ -885,7 +885,7 @@ private extension ReaderAPIAccountDelegate { self.database.deleteSelectedForProcessing(articleIDGroup.map { $0 } ) group.leave() case .failure(let error): - self.logger.error("Article status sync call failed: \(error.localizedDescription)") + self.logger.error("Article status sync call failed: \(error.localizedDescription, privacy: .public)") self.database.resetSelectedForProcessing(articleIDGroup.map { $0 } ) group.leave() } @@ -1005,7 +1005,7 @@ private extension ReaderAPIAccountDelegate { } case .failure(let error): - self.logger.error("Refresh missing articles failed: \(error.localizedDescription)") + self.logger.error("Refresh missing articles failed: \(error.localizedDescription, privacy: .public)") group.leave() } } @@ -1119,7 +1119,7 @@ private extension ReaderAPIAccountDelegate { case .success(let pendingArticleIDs): process(pendingArticleIDs) case .failure(let error): - self.logger.error("Sync Article Read Status failed: \(error.localizedDescription)") + self.logger.error("Sync Article Read Status failed: \(error.localizedDescription, privacy: .public)") } } @@ -1168,7 +1168,7 @@ private extension ReaderAPIAccountDelegate { case .success(let pendingArticleIDs): process(pendingArticleIDs) case .failure(let error): - self.logger.error("Sync Article Starred Status failed: \(error.localizedDescription)") + self.logger.error("Sync Article Starred Status failed: \(error.localizedDescription, privacy: .public)") } } diff --git a/Account/Sources/Account/WebFeedMetadataFile.swift b/Account/Sources/Account/WebFeedMetadataFile.swift index 6d6983286..19e7c5e79 100644 --- a/Account/Sources/Account/WebFeedMetadataFile.swift +++ b/Account/Sources/Account/WebFeedMetadataFile.swift @@ -50,7 +50,7 @@ final class WebFeedMetadataFile: Logging { let data = try encoder.encode(feedMetadata) try data.write(to: fileURL) } catch let error { - logger.error("Save to disk failed: \(error.localizedDescription)") + logger.error("Save to disk failed: \(error.localizedDescription, privacy: .public)") } } diff --git a/NetNewsWire.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/NetNewsWire.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 63e14db4a..8225e2a95 100644 --- a/NetNewsWire.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/NetNewsWire.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -60,8 +60,8 @@ "repositoryURL": "https://github.com/Ranchero-Software/RSCore.git", "state": { "branch": null, - "revision": "86714e838a762a02d1528039cafd1145b98ebae1", - "version": "1.0.12" + "revision": "3af73640bcf7bcfd1a462986d5a1c69b37822155", + "version": "1.0.13" } }, {