├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ ├── config.yml │ └── feature_request.yml ├── dependabot.yml ├── workflows │ ├── cocoapods-trunk-session-keepalive.yml │ ├── danger.yml │ ├── cocoapods-validations.yml │ └── cocoapods-release.yml └── PULL_REQUEST_TEMPLATE.md ├── Sources ├── CocoaLumberjackSwiftSupport │ ├── empty.c │ └── include │ │ └── CocoaLumberjackSwiftSupport │ │ └── SwiftLogLevel.h ├── CocoaLumberjack │ ├── PrivacyInfo.xcprivacy │ ├── include │ │ └── CocoaLumberjack │ │ │ ├── DDFileLogger+Buffering.h │ │ │ ├── DDLoggerNames.h │ │ │ └── DDASLLogCapture.h │ ├── Supporting Files │ │ └── CocoaLumberjack-Info.plist │ ├── DDLoggerNames.m │ └── DDFileLogger+Internal.h └── CocoaLumberjackSwift │ └── Supporting Files │ ├── CocoaLumberjackSwift-Info.plist │ └── CocoaLumberjackSwift.h ├── .spi.yml ├── Demos ├── ContextFilter │ ├── en.lproj │ │ └── InfoPlist.strings │ ├── main.m │ ├── MyContextFilter.h │ ├── ThirdPartyFramework.h │ ├── ContextFilter_Prefix.pch │ ├── ContextFilterAppDelegate.h │ ├── ContextFilter.xcodeproj │ │ └── xcshareddata │ │ │ └── IDETemplateMacros.plist │ ├── MyContextFilter.m │ └── ContextFilter-Info.plist ├── CustomFormatters │ ├── en.lproj │ │ └── InfoPlist.strings │ ├── main.m │ ├── TestFormatter.h │ ├── CustomFormatters_Prefix.pch │ ├── ReadMe.txt │ ├── CustomFormattersAppDelegate.h │ ├── CustomFormatters.xcodeproj │ │ └── xcshareddata │ │ │ └── IDETemplateMacros.plist │ ├── TestFormatter.m │ ├── CustomFormatters-Info.plist │ └── CustomFormattersAppDelegate.m ├── CustomLogLevels │ ├── en.lproj │ │ └── InfoPlist.strings │ ├── main.m │ ├── CustomLogLevels_Prefix.pch │ ├── ReadMe.txt │ ├── CustomLogLevelsAppDelegate.h │ ├── CustomLogLevels.xcodeproj │ │ └── xcshareddata │ │ │ └── IDETemplateMacros.plist │ ├── CustomLogLevelsAppDelegate.m │ └── CustomLogLevels-Info.plist ├── GlobalLogLevel │ ├── en.lproj │ │ └── InfoPlist.strings │ ├── MyLogging.h │ ├── Stuff.h │ ├── GlobalLogLevel.xcodeproj │ │ ├── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDETemplateMacros.plist │ ├── main.m │ ├── GlobalLogLevel_Prefix.pch │ ├── GlobalLogLevelAppDelegate.h │ ├── Stuff.m │ ├── GlobalLogLevelAppDelegate.m │ └── GlobalLogLevel-Info.plist ├── LogFileCompressor │ ├── en.lproj │ │ └── InfoPlist.strings │ ├── main.m │ ├── ReadMe.txt │ ├── LogFileCompressor_Prefix.pch │ ├── CompressingLogFileManager.h │ ├── LogFileCompressor.xcodeproj │ │ └── xcshareddata │ │ │ └── IDETemplateMacros.plist │ ├── LogFileCompressorAppDelegate.h │ └── LogFileCompressor-Info.plist ├── OverflowTestMac │ ├── en.lproj │ │ └── InfoPlist.strings │ ├── main.m │ ├── SlowLogger.h │ ├── SlowLogger.m │ ├── OverflowTestMac_Prefix.pch │ ├── OverflowTestMacAppDelegate.h │ ├── OverflowTestMac.xcodeproj │ │ └── xcshareddata │ │ │ └── IDETemplateMacros.plist │ ├── ReadMe.txt │ └── OverflowTestMac-Info.plist ├── RollingTestMac │ ├── en.lproj │ │ └── InfoPlist.strings │ ├── ReadMe.txt │ ├── main.m │ ├── RollingTestMac_Prefix.pch │ ├── RollingTestMac.xcodeproj │ │ └── xcshareddata │ │ │ └── IDETemplateMacros.plist │ ├── RollingTestMacAppDelegate.h │ └── RollingTestMac-Info.plist ├── CaptureASL │ ├── CaptureASL │ │ ├── en.lproj │ │ │ └── InfoPlist.strings │ │ ├── AppDelegate.h │ │ ├── ViewController.h │ │ ├── main.m │ │ ├── Images.xcassets │ │ │ ├── AppIcon.appiconset │ │ │ │ └── Contents.json │ │ │ └── LaunchImage.launchimage │ │ │ │ └── Contents.json │ │ ├── CaptureASL-Prefix.pch │ │ ├── AppDelegate.m │ │ ├── ViewController.m │ │ └── CaptureASL-Info.plist │ └── CaptureASL.xcodeproj │ │ └── xcshareddata │ │ └── IDETemplateMacros.plist ├── FineGrainedLogging │ ├── en.lproj │ │ └── InfoPlist.strings │ ├── main.m │ ├── TimerOne.h │ ├── TimerTwo.h │ ├── FineGrainedLogging_Prefix.pch │ ├── FineGrainedLogging.xcodeproj │ │ └── xcshareddata │ │ │ └── IDETemplateMacros.plist │ ├── FineGrainedLoggingAppDelegate.h │ ├── FineGrainedLoggingAppDelegate.m │ ├── MYLog.h │ ├── FineGrainedLogging-Info.plist │ └── ReadMe.txt ├── NonArcTest │ └── NonArcTest │ │ ├── en.lproj │ │ ├── InfoPlist.strings │ │ └── Credits.rtf │ │ ├── main.m │ │ ├── AppDelegate.h │ │ ├── NonArcTest-Prefix.pch │ │ ├── AppDelegate.m │ │ └── NonArcTest-Info.plist ├── SQLiteLogger │ ├── SQLiteLogger │ │ ├── en.lproj │ │ │ ├── InfoPlist.strings │ │ │ └── Credits.rtf │ │ ├── main.m │ │ ├── SQLiteLogger-Prefix.pch │ │ ├── SQLiteLoggerAppDelegate.h │ │ └── SQLiteLogger-Info.plist │ ├── SQLiteLogger.xcodeproj │ │ ├── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDETemplateMacros.plist │ ├── FMDB │ │ └── FMDatabaseAdditions.h │ └── FMDBLogger.h ├── Benchmark │ ├── Desktop │ │ ├── BenchmarkMac │ │ │ ├── en.lproj │ │ │ │ ├── InfoPlist.strings │ │ │ │ └── Credits.rtf │ │ │ ├── main.m │ │ │ ├── AppDelegate.h │ │ │ ├── BenchmarkMac-Prefix.pch │ │ │ ├── AppDelegate.m │ │ │ └── BenchmarkMac-Info.plist │ │ ├── BenchmarkMac.xcodeproj │ │ │ ├── project.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── xcshareddata │ │ │ │ └── IDETemplateMacros.plist │ │ └── ReadMe.txt │ └── Mobile │ │ ├── Default-568h@2x.png │ │ ├── ReadMe.txt │ │ ├── Classes │ │ ├── BenchmarkIPhoneViewController.h │ │ ├── BenchmarkIPhoneViewController.m │ │ ├── BenchmarkIPhoneAppDelegate.h │ │ └── BenchmarkIPhoneAppDelegate.m │ │ ├── main.m │ │ ├── BenchmarkIPhone_Prefix.pch │ │ ├── BenchmarkIPhone.xcodeproj │ │ └── xcshareddata │ │ │ └── IDETemplateMacros.plist │ │ └── BenchmarkIPhone-Info.plist ├── CoreDataLogger │ ├── CoreDataLogger │ │ ├── en.lproj │ │ │ ├── InfoPlist.strings │ │ │ └── Credits.rtf │ │ ├── Log.xcdatamodeld │ │ │ ├── CocoaBotLog.xcdatamodel │ │ │ │ ├── layout │ │ │ │ └── elements │ │ │ └── .xccurrentversion │ │ ├── CoreDataLogger.xcdatamodeld │ │ │ └── .xccurrentversion │ │ ├── main.m │ │ ├── LogEntry.m │ │ ├── CoreDataLogger-Prefix.pch │ │ ├── LogEntry.h │ │ ├── CoreDataLoggerAppDelegate.h │ │ └── CoreDataLogger-Info.plist │ └── CoreDataLogger.xcodeproj │ │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ │ └── xcshareddata │ │ └── IDETemplateMacros.plist ├── PerUserLogLevels │ ├── PerUserLogLevels │ │ ├── en.lproj │ │ │ ├── InfoPlist.strings │ │ │ └── Credits.rtf │ │ ├── main.m │ │ ├── AppDelegate.h │ │ ├── PerUserLogLevels-Prefix.pch │ │ └── PerUserLogLevels-Info.plist │ ├── PerUserLogLevels.xcodeproj │ │ └── xcshareddata │ │ │ └── IDETemplateMacros.plist │ └── Scripts │ │ └── LumberjackUser.bash ├── DispatchQueueLogger │ ├── DispatchQueueLogger │ │ ├── en.lproj │ │ │ ├── InfoPlist.strings │ │ │ └── Credits.rtf │ │ ├── main.m │ │ ├── AppDelegate.h │ │ ├── DispatchQueueLogger-Prefix.pch │ │ └── DispatchQueueLogger-Info.plist │ └── DispatchQueueLogger.xcodeproj │ │ └── xcshareddata │ │ └── IDETemplateMacros.plist ├── TestXcodeColors │ ├── Desktop │ │ ├── TestXcodeColors │ │ │ ├── en.lproj │ │ │ │ ├── InfoPlist.strings │ │ │ │ └── Credits.rtf │ │ │ ├── main.m │ │ │ ├── AppDelegate.h │ │ │ ├── TestXcodeColors-Prefix.pch │ │ │ └── TestXcodeColors-Info.plist │ │ └── TestXcodeColors.xcodeproj │ │ │ └── xcshareddata │ │ │ └── IDETemplateMacros.plist │ └── Mobile │ │ ├── TextXcodeColors │ │ ├── en.lproj │ │ │ └── InfoPlist.strings │ │ ├── ViewController.m │ │ ├── ViewController.h │ │ ├── main.m │ │ ├── AppDelegate.h │ │ ├── TextXcodeColors-Prefix.pch │ │ └── TextXcodeColors-Info.plist │ │ ├── Default-568h@2x.png │ │ └── TextXcodeColors.xcodeproj │ │ └── xcshareddata │ │ └── IDETemplateMacros.plist ├── RegisteredDynamicLogging │ ├── Desktop │ │ ├── RegisteredLoggingTest │ │ │ ├── en.lproj │ │ │ │ ├── InfoPlist.strings │ │ │ │ └── Credits.rtf │ │ │ ├── Lions.h │ │ │ ├── Tigers.h │ │ │ ├── main.m │ │ │ ├── RegisteredLoggingTest-Prefix.pch │ │ │ ├── RegisteredLoggingTestAppDelegate.h │ │ │ ├── Lions.m │ │ │ ├── Tigers.m │ │ │ ├── RegisteredLoggingTest-Info.plist │ │ │ └── RegisteredLoggingTestAppDelegate.m │ │ └── RegisteredLoggingTest.xcodeproj │ │ │ └── xcshareddata │ │ │ └── IDETemplateMacros.plist │ └── Mobile │ │ ├── RegisteredLoggingTest │ │ ├── en.lproj │ │ │ └── InfoPlist.strings │ │ ├── Lions.h │ │ ├── Tigers.h │ │ ├── RegisteredLoggingTestViewController.h │ │ ├── RegisteredLoggingTestViewController.m │ │ ├── main.m │ │ ├── RegisteredLoggingTestAppDelegate.h │ │ ├── RegisteredLoggingTest-Prefix.pch │ │ ├── Lions.m │ │ ├── Tigers.m │ │ ├── RegisteredLoggingTest-Info.plist │ │ └── RegisteredLoggingTestAppDelegate.m │ │ ├── Default-568h@2x.png │ │ └── RegisteredLoggingTest.xcodeproj │ │ └── xcshareddata │ │ └── IDETemplateMacros.plist ├── UniversalApp │ ├── Default-568h@2x.png │ ├── Classes │ │ ├── UniversalAppViewController.h │ │ ├── UniversalAppViewController.m │ │ └── UniversalAppAppDelegate.h │ ├── main.m │ ├── UniversalApp_Prefix.pch │ ├── UniversalApp.xcodeproj │ │ └── xcshareddata │ │ │ └── IDETemplateMacros.plist │ └── UniversalApp-Info.plist ├── WebServerIPhone │ ├── Default-568h@2x.png │ ├── Vendor │ │ └── CocoaHTTPServer │ │ │ ├── Responses │ │ │ ├── HTTPErrorResponse.h │ │ │ ├── HTTPDataResponse.h │ │ │ ├── HTTPRedirectResponse.h │ │ │ ├── HTTPFileResponse.h │ │ │ ├── HTTPErrorResponse.m │ │ │ └── HTTPRedirectResponse.m │ │ │ ├── Categories │ │ │ ├── DDData.h │ │ │ └── DDNumber.h │ │ │ ├── Mime │ │ │ ├── MultipartMessageHeaderField.h │ │ │ └── MultipartMessageHeader.h │ │ │ ├── HTTPAuthenticationRequest.h │ │ │ └── HTTPMessage.h │ ├── Classes │ │ ├── MyHTTPConnection.h │ │ ├── WebServerIPhoneViewController.h │ │ ├── WebServerIPhoneViewController.m │ │ ├── WebSocketLogger.h │ │ └── WebServerIPhoneAppDelegate.h │ ├── main.m │ ├── WebServerIPhone_Prefix.pch │ ├── Web │ │ ├── index.html │ │ └── styles.css │ ├── WebServerIPhone.xcodeproj │ │ └── xcshareddata │ │ │ └── IDETemplateMacros.plist │ └── WebServerIPhone-Info.plist ├── Demos.xcworkspace │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist └── CLI │ ├── CLI │ ├── CLI-Prefix.pch │ └── main.m │ └── CLI.xcodeproj │ ├── project.xcworkspace │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ └── IDETemplateMacros.plist ├── LumberjackLogo.png ├── Documentation ├── CocoaLumberjackClassDiagram.png ├── AppCode-support.md └── PerLoggerLogLevels.md ├── Integration ├── watchOSSwiftIntegration Extension │ ├── Assets.xcassets │ │ ├── Contents.json │ │ └── Complication.complicationset │ │ │ ├── Circular.imageset │ │ │ └── Contents.json │ │ │ ├── Extra Large.imageset │ │ │ └── Contents.json │ │ │ ├── Modular.imageset │ │ │ └── Contents.json │ │ │ ├── Utilitarian.imageset │ │ │ └── Contents.json │ │ │ ├── Graphic Bezel.imageset │ │ │ └── Contents.json │ │ │ ├── Graphic Circular.imageset │ │ │ └── Contents.json │ │ │ ├── Graphic Corner.imageset │ │ │ └── Contents.json │ │ │ ├── Graphic Large Rectangular.imageset │ │ │ └── Contents.json │ │ │ └── Contents.json │ ├── InterfaceController.swift │ ├── NotificationController.swift │ ├── PushNotificationPayload.apns │ └── Info.plist ├── Integration.xcodeproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── IDETemplateMacros.plist ├── macOSSwiftIntegration │ ├── macOSSwiftIntegration.entitlements │ ├── main.swift │ └── Info.plist ├── Sources │ ├── ViewController.h │ ├── AppDelegate.h │ ├── main.m │ ├── AppDelegate.m │ └── AppDelegate.swift ├── tvOSSwiftIntegration │ └── Info.plist └── watchOSSwiftIntegration │ └── Info.plist ├── Benchmarking ├── Results │ ├── Lumberjack Benchmark (iMac).ograph │ ├── Lumberjack Benchmark (iPad).ograph │ ├── Lumberjack Benchmark (PowerMac).ograph │ ├── Lumberjack Benchmark (iPhone 3GS).ograph │ ├── Benchmark iMac.csv │ ├── Benchmark iPad.csv │ ├── Benchmark PowerMac.csv │ ├── Benchmark iPhone 3GS.csv │ └── Benchmark iPodTouch3 GCD.csv ├── BaseNSLogging.h ├── DynamicLogging.h ├── StaticLogging.h ├── main.m ├── Benchmarking.xcodeproj │ └── xcshareddata │ │ └── IDETemplateMacros.plist └── PerformanceTesting.h ├── Lumberjack.xcodeproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ ├── WorkspaceSettings.xcsettings │ │ └── IDEWorkspaceChecks.plist └── xcshareddata │ └── IDETemplateMacros.plist ├── Configs ├── Tests-Debug.xcconfig ├── Tests-Release.xcconfig ├── Tests-Shared.xcconfig ├── App-Release.xcconfig ├── App-Shared.xcconfig ├── App-Debug.xcconfig └── Module-Release.xcconfig ├── Tests ├── Tests.xcodeproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ ├── xcbaselines │ │ └── 432B533F1AAE425D00843E69.xcbaseline │ │ │ ├── AB613018-19D0-4E38-845A-D0F077AAF499.plist │ │ │ └── Info.plist │ │ └── IDETemplateMacros.plist ├── Helpers.md ├── Info.plist └── CocoaLumberjackTests │ └── DDSampleFileManager.h ├── Xcode ├── Lumberjack.xcworkspace │ ├── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ └── contents.xcworkspacedata └── Lumberjack │ └── CocoaLumberjack-Prefix.pch ├── .swiftlint.yml ├── .gitignore ├── Package.resolved └── LICENSE /.gitattributes: -------------------------------------------------------------------------------- 1 | *.mdj binary 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | -------------------------------------------------------------------------------- /Sources/CocoaLumberjackSwiftSupport/empty.c: -------------------------------------------------------------------------------- 1 | /* This file is intentionally left blank */ 2 | -------------------------------------------------------------------------------- /.spi.yml: -------------------------------------------------------------------------------- 1 | version: 1 2 | external_links: 3 | documentation: "https://cocoalumberjack.github.io" 4 | -------------------------------------------------------------------------------- /Demos/ContextFilter/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Demos/CustomFormatters/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Demos/CustomLogLevels/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Demos/GlobalLogLevel/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Demos/LogFileCompressor/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Demos/OverflowTestMac/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Demos/RollingTestMac/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /LumberjackLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/threema-ch/CocoaLumberjack/master/LumberjackLogo.png -------------------------------------------------------------------------------- /Demos/CaptureASL/CaptureASL/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Demos/FineGrainedLogging/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Demos/NonArcTest/NonArcTest/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Demos/SQLiteLogger/SQLiteLogger/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Demos/Benchmark/Desktop/BenchmarkMac/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Demos/CoreDataLogger/CoreDataLogger/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Demos/PerUserLogLevels/PerUserLogLevels/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Demos/DispatchQueueLogger/DispatchQueueLogger/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Demos/TestXcodeColors/Desktop/TestXcodeColors/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Demos/TestXcodeColors/Mobile/TextXcodeColors/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Demos/RegisteredDynamicLogging/Desktop/RegisteredLoggingTest/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Demos/RegisteredDynamicLogging/Mobile/RegisteredLoggingTest/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Demos/UniversalApp/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/threema-ch/CocoaLumberjack/master/Demos/UniversalApp/Default-568h@2x.png -------------------------------------------------------------------------------- /Demos/Benchmark/Mobile/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/threema-ch/CocoaLumberjack/master/Demos/Benchmark/Mobile/Default-568h@2x.png -------------------------------------------------------------------------------- /Demos/WebServerIPhone/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/threema-ch/CocoaLumberjack/master/Demos/WebServerIPhone/Default-568h@2x.png -------------------------------------------------------------------------------- /Documentation/CocoaLumberjackClassDiagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/threema-ch/CocoaLumberjack/master/Documentation/CocoaLumberjackClassDiagram.png -------------------------------------------------------------------------------- /Integration/watchOSSwiftIntegration Extension/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Demos/TestXcodeColors/Mobile/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/threema-ch/CocoaLumberjack/master/Demos/TestXcodeColors/Mobile/Default-568h@2x.png -------------------------------------------------------------------------------- /Demos/RollingTestMac/ReadMe.txt: -------------------------------------------------------------------------------- 1 | This Xcode project tests the file logger by ensuring that it is properly rolling log files when it should. It is a unit test project. 2 | -------------------------------------------------------------------------------- /Benchmarking/Results/Lumberjack Benchmark (iMac).ograph: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/threema-ch/CocoaLumberjack/master/Benchmarking/Results/Lumberjack Benchmark (iMac).ograph -------------------------------------------------------------------------------- /Benchmarking/Results/Lumberjack Benchmark (iPad).ograph: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/threema-ch/CocoaLumberjack/master/Benchmarking/Results/Lumberjack Benchmark (iPad).ograph -------------------------------------------------------------------------------- /Demos/RegisteredDynamicLogging/Mobile/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/threema-ch/CocoaLumberjack/master/Demos/RegisteredDynamicLogging/Mobile/Default-568h@2x.png -------------------------------------------------------------------------------- /Benchmarking/Results/Lumberjack Benchmark (PowerMac).ograph: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/threema-ch/CocoaLumberjack/master/Benchmarking/Results/Lumberjack Benchmark (PowerMac).ograph -------------------------------------------------------------------------------- /Benchmarking/Results/Lumberjack Benchmark (iPhone 3GS).ograph: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/threema-ch/CocoaLumberjack/master/Benchmarking/Results/Lumberjack Benchmark (iPhone 3GS).ograph -------------------------------------------------------------------------------- /Lumberjack.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Configs/Tests-Debug.xcconfig: -------------------------------------------------------------------------------- 1 | // Configuration settings file format documentation can be found at: 2 | // https://help.apple.com/xcode/#/dev745c5c974 3 | 4 | #include "Module-Debug.xcconfig" 5 | #include "Tests-Shared.xcconfig" 6 | -------------------------------------------------------------------------------- /Demos/CoreDataLogger/CoreDataLogger/Log.xcdatamodeld/CocoaBotLog.xcdatamodel/layout: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/threema-ch/CocoaLumberjack/master/Demos/CoreDataLogger/CoreDataLogger/Log.xcdatamodeld/CocoaBotLog.xcdatamodel/layout -------------------------------------------------------------------------------- /Demos/GlobalLogLevel/MyLogging.h: -------------------------------------------------------------------------------- 1 | // 2 | // MyLogging.h 3 | // GlobalLogLevel 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | extern DDLogLevel ddLogLevel; 11 | -------------------------------------------------------------------------------- /Tests/Tests.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Configs/Tests-Release.xcconfig: -------------------------------------------------------------------------------- 1 | // Configuration settings file format documentation can be found at: 2 | // https://help.apple.com/xcode/#/dev745c5c974 3 | 4 | #include "Module-Release.xcconfig" 5 | #include "Tests-Shared.xcconfig" 6 | -------------------------------------------------------------------------------- /Demos/CoreDataLogger/CoreDataLogger/Log.xcdatamodeld/CocoaBotLog.xcdatamodel/elements: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/threema-ch/CocoaLumberjack/master/Demos/CoreDataLogger/CoreDataLogger/Log.xcdatamodeld/CocoaBotLog.xcdatamodel/elements -------------------------------------------------------------------------------- /Demos/GlobalLogLevel/Stuff.h: -------------------------------------------------------------------------------- 1 | // 2 | // Stuff.h 3 | // GlobalLogLevel 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @interface Stuff : NSObject 11 | 12 | + (void)doStuff; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Integration/Integration.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Demos/Benchmark/Desktop/BenchmarkMac.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Demos/SQLiteLogger/SQLiteLogger.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Demos/ContextFilter/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // ContextFilter 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | int main(int argc, char *argv[]) 11 | { 12 | return NSApplicationMain(argc, (const char **) argv); 13 | } 14 | -------------------------------------------------------------------------------- /Demos/CoreDataLogger/CoreDataLogger.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Demos/GlobalLogLevel/GlobalLogLevel.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Demos/Benchmark/Desktop/ReadMe.txt: -------------------------------------------------------------------------------- 1 | This Xcode project provides a benchmarking suite for performance testing on Mac OS X. 2 | 3 | Details of the tests, as well as sample results, are provided on the Wiki: 4 | https://github.com/CocoaLumberjack/CocoaLumberjack/wiki/Performance 5 | -------------------------------------------------------------------------------- /Demos/Benchmark/Mobile/ReadMe.txt: -------------------------------------------------------------------------------- 1 | This Xcode project provides a benchmarking suite for performance testing on the iPhone. 2 | 3 | Details of the tests, as well as sample results, are provided on the Wiki: 4 | https://github.com/CocoaLumberjack/CocoaLumberjack/wiki/Performance 5 | -------------------------------------------------------------------------------- /Demos/CoreDataLogger/CoreDataLogger/CoreDataLogger.xcdatamodeld/.xccurrentversion: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Demos/CustomLogLevels/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // CustomLogLevels 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | int main(int argc, char *argv[]) 11 | { 12 | return NSApplicationMain(argc, (const char **) argv); 13 | } 14 | -------------------------------------------------------------------------------- /Demos/GlobalLogLevel/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // GlobalLogLevel 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | int main(int argc, char *argv[]) 11 | { 12 | return NSApplicationMain(argc, (const char **) argv); 13 | } 14 | -------------------------------------------------------------------------------- /Demos/NonArcTest/NonArcTest/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // NonArcTest 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | int main(int argc, char *argv[]) 11 | { 12 | return NSApplicationMain(argc, (const char **)argv); 13 | } 14 | -------------------------------------------------------------------------------- /Demos/OverflowTestMac/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // OverflowTestMac 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | int main(int argc, char *argv[]) 11 | { 12 | return NSApplicationMain(argc, (const char **) argv); 13 | } 14 | -------------------------------------------------------------------------------- /Demos/RollingTestMac/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // RollingTestMac 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | int main(int argc, char *argv[]) 11 | { 12 | return NSApplicationMain(argc, (const char **) argv); 13 | } 14 | -------------------------------------------------------------------------------- /Demos/WebServerIPhone/Vendor/CocoaHTTPServer/Responses/HTTPErrorResponse.h: -------------------------------------------------------------------------------- 1 | #import "HTTPResponse.h" 2 | 3 | @interface HTTPErrorResponse : NSObject { 4 | NSInteger _status; 5 | } 6 | 7 | - (id)initWithErrorCode:(int)httpErrorCode; 8 | 9 | @end 10 | -------------------------------------------------------------------------------- /Demos/CustomFormatters/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // CustomFormatters 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | int main(int argc, char *argv[]) 11 | { 12 | return NSApplicationMain(argc, (const char **) argv); 13 | } 14 | -------------------------------------------------------------------------------- /Demos/FineGrainedLogging/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // FineGrainedLogging 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | int main(int argc, char *argv[]) 11 | { 12 | return NSApplicationMain(argc, (const char **) argv); 13 | } 14 | -------------------------------------------------------------------------------- /Demos/LogFileCompressor/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // LogFileCompressor 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | int main(int argc, char *argv[]) 11 | { 12 | return NSApplicationMain(argc, (const char **) argv); 13 | } 14 | -------------------------------------------------------------------------------- /Demos/SQLiteLogger/SQLiteLogger/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // SQLiteLogger 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | int main(int argc, char *argv[]) 11 | { 12 | return NSApplicationMain(argc, (const char **)argv); 13 | } 14 | -------------------------------------------------------------------------------- /Demos/Benchmark/Desktop/BenchmarkMac/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // BenchmarkMac 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | int main(int argc, char *argv[]) 11 | { 12 | return NSApplicationMain(argc, (const char **)argv); 13 | } 14 | -------------------------------------------------------------------------------- /Demos/CoreDataLogger/CoreDataLogger/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // CoreDataLogger 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | int main(int argc, char *argv[]) 11 | { 12 | return NSApplicationMain(argc, (const char **)argv); 13 | } 14 | -------------------------------------------------------------------------------- /Demos/UniversalApp/Classes/UniversalAppViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // UniversalAppViewController.h 3 | // UniversalApp 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @interface UniversalAppViewController : UIViewController 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /Demos/UniversalApp/Classes/UniversalAppViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // UniversalAppViewController.m 3 | // UniversalApp 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import "UniversalAppViewController.h" 9 | 10 | @implementation UniversalAppViewController 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /Demos/TestXcodeColors/Mobile/TextXcodeColors/ViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.m 3 | // TextXcodeColors 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import "ViewController.h" 9 | 10 | @implementation ViewController 11 | 12 | @synthesize label; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Demos/PerUserLogLevels/PerUserLogLevels/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // PerUserLogLevels 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | int main(int argc, char *argv[]) 11 | { 12 | return NSApplicationMain(argc, (const char **)argv); 13 | } 14 | -------------------------------------------------------------------------------- /Demos/RegisteredDynamicLogging/Desktop/RegisteredLoggingTest/Lions.h: -------------------------------------------------------------------------------- 1 | // 2 | // Lions.h 3 | // RegisteredLoggingTest 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @interface Lions : NSObject 11 | 12 | + (void)logStuff; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Demos/RegisteredDynamicLogging/Mobile/RegisteredLoggingTest/Lions.h: -------------------------------------------------------------------------------- 1 | // 2 | // Lions.h 3 | // RegisteredLoggingTest 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @interface Lions : NSObject 11 | 12 | + (void)logStuff; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Demos/RegisteredDynamicLogging/Mobile/RegisteredLoggingTest/Tigers.h: -------------------------------------------------------------------------------- 1 | // 2 | // Tigers.h 3 | // RegisteredLoggingTest 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @interface Tigers : NSObject 11 | 12 | + (void)logStuff; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Demos/Benchmark/Mobile/Classes/BenchmarkIPhoneViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // BenchmarkIPhoneViewController.h 3 | // BenchmarkIPhone 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @interface BenchmarkIPhoneViewController : UIViewController 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /Demos/DispatchQueueLogger/DispatchQueueLogger/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // DispatchQueueLogger 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | int main(int argc, char *argv[]) 11 | { 12 | return NSApplicationMain(argc, (const char **)argv); 13 | } 14 | -------------------------------------------------------------------------------- /Demos/FineGrainedLogging/TimerOne.h: -------------------------------------------------------------------------------- 1 | // 2 | // TimerOne.h 3 | // FineGrainedLogging 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @interface TimerOne : NSObject 11 | { 12 | NSTimer *foodTimer; 13 | NSTimer *sleepTimer; 14 | } 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Demos/FineGrainedLogging/TimerTwo.h: -------------------------------------------------------------------------------- 1 | // 2 | // TimerTwo.h 3 | // FineGrainedLogging 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @interface TimerTwo : NSObject 11 | { 12 | NSTimer *foodTimer; 13 | NSTimer *sleepTimer; 14 | } 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Demos/RegisteredDynamicLogging/Desktop/RegisteredLoggingTest/Tigers.h: -------------------------------------------------------------------------------- 1 | // 2 | // Tigers.h 3 | // RegisteredLoggingTest 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @interface Tigers : NSObject 11 | 12 | + (void)logStuff; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Demos/TestXcodeColors/Desktop/TestXcodeColors/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // TestXcodeColors 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | int main(int argc, char *argv[]) 11 | { 12 | return NSApplicationMain(argc, (const char **)argv); 13 | } 14 | -------------------------------------------------------------------------------- /Demos/WebServerIPhone/Classes/MyHTTPConnection.h: -------------------------------------------------------------------------------- 1 | // 2 | // MyHTTPConnection.h 3 | // WebServerIPhone 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | #import "HTTPConnection.h" 10 | 11 | @interface MyHTTPConnection : HTTPConnection 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demos/WebServerIPhone/Classes/WebServerIPhoneViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // WebServerIPhoneViewController.h 3 | // WebServerIPhone 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @interface WebServerIPhoneViewController : UIViewController 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /Demos/Benchmark/Mobile/Classes/BenchmarkIPhoneViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // BenchmarkIPhoneViewController.m 3 | // BenchmarkIPhone 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import "BenchmarkIPhoneViewController.h" 9 | 10 | @implementation BenchmarkIPhoneViewController 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /Demos/OverflowTestMac/SlowLogger.h: -------------------------------------------------------------------------------- 1 | // 2 | // SlowLogger.h 3 | // OverflowTestMac 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | #import 10 | 11 | @interface SlowLogger : DDAbstractLogger 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demos/WebServerIPhone/Classes/WebServerIPhoneViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // WebServerIPhoneViewController.m 3 | // WebServerIPhone 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import "WebServerIPhoneViewController.h" 9 | 10 | @implementation WebServerIPhoneViewController 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /Demos/NonArcTest/NonArcTest/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // NonArcTest 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @interface AppDelegate : NSObject 11 | 12 | @property (assign) IBOutlet NSWindow *window; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Demos/ContextFilter/MyContextFilter.h: -------------------------------------------------------------------------------- 1 | // 2 | // MyContextFilter.h 3 | // ContextFilter 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | #import 10 | 11 | @interface MyContextFilter : NSObject 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demos/CustomFormatters/TestFormatter.h: -------------------------------------------------------------------------------- 1 | // 2 | // TestFormatter.h 3 | // CustomFormatters 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | #import 10 | 11 | @interface TestFormatter : NSObject 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demos/LogFileCompressor/ReadMe.txt: -------------------------------------------------------------------------------- 1 | This Xcode project demonstrates compressing archived log files. This is done by creating a custom DDLogFileManager, which is part of the DDFileLogger. 2 | 3 | For more information, see the Wiki article: 4 | https://github.com/CocoaLumberjack/CocoaLumberjack/wiki/LogFileManagement 5 | -------------------------------------------------------------------------------- /Demos/Benchmark/Desktop/BenchmarkMac/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // BenchmarkMac 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @interface AppDelegate : NSObject 11 | 12 | @property (assign) IBOutlet NSWindow *window; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Demos/CaptureASL/CaptureASL/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // CaptureASL 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @interface AppDelegate : UIResponder 11 | 12 | @property (strong, nonatomic) UIWindow *window; 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /Demos/CoreDataLogger/CoreDataLogger/LogEntry.m: -------------------------------------------------------------------------------- 1 | // 2 | // LogEntry.m 3 | // CoreDataLogger 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import "LogEntry.h" 9 | 10 | @implementation LogEntry 11 | 12 | @dynamic context; 13 | @dynamic level; 14 | @dynamic message; 15 | @dynamic timestamp; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Demos/RegisteredDynamicLogging/Desktop/RegisteredLoggingTest/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // RegisteredLoggingTest 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | int main(int argc, char *argv[]) 11 | { 12 | return NSApplicationMain(argc, (const char **)argv); 13 | } 14 | -------------------------------------------------------------------------------- /Demos/ContextFilter/ThirdPartyFramework.h: -------------------------------------------------------------------------------- 1 | // 2 | // ThirdPartyFramework.h 3 | // ContextFilter 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | #define TP_LOG_CONTEXT 1044 11 | 12 | @interface ThirdPartyFramework : NSObject 13 | 14 | + (void)start; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Demos/Demos.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Configs/Tests-Shared.xcconfig: -------------------------------------------------------------------------------- 1 | // Configuration settings file format documentation can be found at: 2 | // https://help.apple.com/xcode/#/dev745c5c974 3 | 4 | IPHONEOS_DEPLOYMENT_TARGET = 12.0 5 | MACOSX_DEPLOYMENT_TARGET = 11.0 6 | TVOS_DEPLOYMENT_TARGET = 12.0 7 | XROS_DEPLOYMENT_TARGET = 1.0 8 | WATCHOS_DEPLOYMENT_TARGET = 5.0 9 | -------------------------------------------------------------------------------- /Demos/CaptureASL/CaptureASL/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // CaptureASL 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @interface ViewController : UIViewController 11 | 12 | - (IBAction)log:(id)sender; 13 | - (IBAction)asl_log:(UIButton *)sender; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Demos/PerUserLogLevels/PerUserLogLevels/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // PerUserLogLevels 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @interface AppDelegate : NSObject 11 | 12 | @property (assign) IBOutlet NSWindow *window; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Xcode/Lumberjack.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Demos/NonArcTest/NonArcTest/NonArcTest-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // NonArcTest-Prefix.pch 3 | // NonArcTest 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | // 8 | // Prefix header for all source files of the 'NonArcTest' target in the 'NonArcTest' project 9 | // 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #endif 14 | -------------------------------------------------------------------------------- /Demos/OverflowTestMac/SlowLogger.m: -------------------------------------------------------------------------------- 1 | // 2 | // SlowLogger.m 3 | // OverflowTestMac 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import "SlowLogger.h" 9 | 10 | @implementation SlowLogger 11 | 12 | - (void)logMessage:(DDLogMessage *)logMessage 13 | { 14 | [NSThread sleepForTimeInterval:0.25]; 15 | } 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Demos/TestXcodeColors/Desktop/TestXcodeColors/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // TestXcodeColors 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @interface AppDelegate : NSObject 11 | 12 | @property (assign) IBOutlet NSWindow *window; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Demos/UniversalApp/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // UniversalApp 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | int main(int argc, char *argv[]) { 11 | @autoreleasepool { 12 | int retVal = UIApplicationMain(argc, argv, nil, nil); 13 | return retVal; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Demos/WebServerIPhone/Vendor/CocoaHTTPServer/Categories/DDData.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface NSData (DDData) 4 | 5 | - (NSData *)md5Digest; 6 | 7 | - (NSData *)sha1Digest; 8 | 9 | - (NSString *)hexStringValue; 10 | 11 | - (NSString *)base64Encoded; 12 | - (NSData *)base64Decoded; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Demos/WebServerIPhone/Vendor/CocoaHTTPServer/Responses/HTTPDataResponse.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import "HTTPResponse.h" 3 | 4 | 5 | @interface HTTPDataResponse : NSObject 6 | { 7 | NSUInteger offset; 8 | NSData *data; 9 | } 10 | 11 | - (id)initWithData:(NSData *)data; 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Demos/WebServerIPhone/Vendor/CocoaHTTPServer/Responses/HTTPRedirectResponse.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import "HTTPResponse.h" 3 | 4 | 5 | @interface HTTPRedirectResponse : NSObject 6 | { 7 | NSString *redirectPath; 8 | } 9 | 10 | - (id)initWithPath:(NSString *)redirectPath; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /Lumberjack.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Demos/Benchmark/Mobile/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // BenchmarkIPhone 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | int main(int argc, char *argv[]) { 11 | @autoreleasepool { 12 | int retVal = UIApplicationMain(argc, argv, nil, nil); 13 | return retVal; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Demos/CLI/CLI/CLI-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // CLI-Prefix.pch 3 | // CLI 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | // 8 | // Prefix header 9 | // 10 | // The contents of this file are implicitly included at the beginning of every source file. 11 | // 12 | 13 | #ifdef __OBJC__ 14 | #import 15 | #endif 16 | -------------------------------------------------------------------------------- /Demos/WebServerIPhone/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // WebServerIPhone 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | int main(int argc, char *argv[]) { 11 | @autoreleasepool { 12 | int retVal = UIApplicationMain(argc, argv, nil, nil); 13 | return retVal; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Lumberjack.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Demos/CLI/CLI.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Demos/ContextFilter/ContextFilter_Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // ContextFilter_Prefix.pch 3 | // ContextFilter 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | // 8 | // Prefix header for all source files of the 'ContextFilter' target in the 'ContextFilter' project 9 | // 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #endif 14 | -------------------------------------------------------------------------------- /Demos/SQLiteLogger/SQLiteLogger/SQLiteLogger-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // SQLiteLogger-Prefix.pch 3 | // SQLiteLogger 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | // 8 | // Prefix header for all source files of the 'SQLiteLogger' target in the 'SQLiteLogger' project 9 | // 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #endif 14 | -------------------------------------------------------------------------------- /Tests/Tests.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Demos/Benchmark/Desktop/BenchmarkMac/BenchmarkMac-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // BenchmarkMac-Prefix.pch 3 | // BenchmarkMac 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | // 8 | // Prefix header for all source files of the 'BenchmarkMac' target in the 'BenchmarkMac' project 9 | // 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #endif 14 | -------------------------------------------------------------------------------- /Demos/DispatchQueueLogger/DispatchQueueLogger/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // DispatchQueueLogger 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @interface AppDelegate : NSObject 11 | 12 | @property (unsafe_unretained) IBOutlet NSWindow *window; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Demos/GlobalLogLevel/GlobalLogLevel_Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // GlobalLogLevel_Prefix.pch 3 | // GlobalLogLevel 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | // 8 | // Prefix header for all source files of the 'GlobalLogLevel' target in the 'GlobalLogLevel' project 9 | // 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #endif 14 | -------------------------------------------------------------------------------- /Demos/RollingTestMac/RollingTestMac_Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // RollingTestMac_Prefix.pch 3 | // RollingTestMac 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | // 8 | // Prefix header for all source files of the 'RollingTestMac' target in the 'RollingTestMac' project 9 | // 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #endif 14 | -------------------------------------------------------------------------------- /Demos/CustomLogLevels/CustomLogLevels_Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // CustomLogLevels_Prefix.pch 3 | // CustomLogLevels 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | // 8 | // Prefix header for all source files of the 'CustomLogLevels' target in the 'CustomLogLevels' project 9 | // 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #endif 14 | -------------------------------------------------------------------------------- /Demos/OverflowTestMac/OverflowTestMac_Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // OverflowTestMac_Prefix.pch 3 | // OverflowTestMac 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | // 8 | // Prefix header for all source files of the 'OverflowTestMac' target in the 'OverflowTestMac' project 9 | // 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #endif 14 | -------------------------------------------------------------------------------- /Demos/RegisteredDynamicLogging/Mobile/RegisteredLoggingTest/RegisteredLoggingTestViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // RegisteredLoggingTestViewController.h 3 | // RegisteredLoggingTest 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @interface RegisteredLoggingTestViewController : UIViewController 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /Integration/Integration.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Demos/CoreDataLogger/CoreDataLogger/CoreDataLogger-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // CoreDataLogger-Prefix.pch 3 | // CoreDataLogger 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | // 8 | // Prefix header for all source files of the 'CoreDataLogger' target in the 'CoreDataLogger' project 9 | // 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #endif 14 | -------------------------------------------------------------------------------- /Demos/CoreDataLogger/CoreDataLogger/Log.xcdatamodeld/.xccurrentversion: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | _XCCurrentVersionName 6 | CocoaBotLog.xcdatamodel 7 | 8 | 9 | -------------------------------------------------------------------------------- /Demos/CustomFormatters/CustomFormatters_Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // CustomFormatters_Prefix.pch 3 | // CustomFormatters 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | // 8 | // Prefix header for all source files of the 'CustomFormatters' target in the 'CustomFormatters' project 9 | // 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #endif 14 | -------------------------------------------------------------------------------- /Benchmarking/BaseNSLogging.h: -------------------------------------------------------------------------------- 1 | // 2 | // BaseNSLogging.h 3 | // Benchmarking 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @interface BaseNSLogging : NSObject 11 | 12 | + (void)speedTest0; 13 | + (void)speedTest1; 14 | + (void)speedTest2; 15 | + (void)speedTest3; 16 | + (void)speedTest4; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Benchmarking/DynamicLogging.h: -------------------------------------------------------------------------------- 1 | // 2 | // DynamicLogging.h 3 | // Benchmarking 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @interface DynamicLogging : NSObject 11 | 12 | + (void)speedTest0; 13 | + (void)speedTest1; 14 | + (void)speedTest2; 15 | + (void)speedTest3; 16 | + (void)speedTest4; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Benchmarking/StaticLogging.h: -------------------------------------------------------------------------------- 1 | // 2 | // StaticLogging.h 3 | // Benchmarking 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @interface StaticLogging : NSObject 11 | 12 | + (void)speedTest0; 13 | + (void)speedTest1; 14 | + (void)speedTest2; 15 | + (void)speedTest3; 16 | + (void)speedTest4; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Demos/LogFileCompressor/LogFileCompressor_Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // LogFileCompressor_Prefix.pch 3 | // LogFileCompressor 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | // 8 | // Prefix header for all source files of the 'LogFileCompressor' target in the 'LogFileCompressor' project 9 | // 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #endif 14 | -------------------------------------------------------------------------------- /Demos/RegisteredDynamicLogging/Mobile/RegisteredLoggingTest/RegisteredLoggingTestViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // RegisteredLoggingTestViewController.m 3 | // RegisteredLoggingTest 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import "RegisteredLoggingTestViewController.h" 9 | 10 | @implementation RegisteredLoggingTestViewController 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /.swiftlint.yml: -------------------------------------------------------------------------------- 1 | disabled_rules: 2 | - line_length 3 | - function_parameter_count 4 | - syntactic_sugar 5 | - private_over_fileprivate 6 | 7 | opt_in_rules: 8 | - empty_count 9 | - force_unwrapping 10 | 11 | nesting: 12 | type_level: 4 13 | 14 | identifier_name: 15 | allowed_symbols: "_" 16 | 17 | mandatory_comma: 18 | mandatory_comma: true 19 | -------------------------------------------------------------------------------- /Demos/Benchmark/Desktop/BenchmarkMac.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Benchmarking/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Benchmarking 4 | // 5 | // CocoaLumberjack Benchmarking 6 | // 7 | 8 | #import 9 | 10 | #import "PerformanceTesting.h" 11 | 12 | int main(int argc, const char * argv[]) { 13 | @autoreleasepool { 14 | [PerformanceTesting startPerformanceTests]; 15 | } 16 | return 0; 17 | } 18 | -------------------------------------------------------------------------------- /Demos/FineGrainedLogging/FineGrainedLogging_Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // FineGrainedLogging_Prefix.pch 3 | // FineGrainedLogging 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | // 8 | // Prefix header for all source files of the 'FineGrainedLogging' target in the 'FineGrainedLogging' project 9 | // 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #endif 14 | -------------------------------------------------------------------------------- /Demos/PerUserLogLevels/PerUserLogLevels/PerUserLogLevels-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // PerUserLogLevels-Prefix.pch 3 | // PerUserLogLevels 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | // 8 | // Prefix header for all source files of the 'PerUserLogLevels' target in the 'PerUserLogLevels' project 9 | // 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #endif 14 | -------------------------------------------------------------------------------- /Demos/TestXcodeColors/Desktop/TestXcodeColors/TestXcodeColors-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // TestXcodeColors-Prefix.pch 3 | // TestXcodeColors 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | // 8 | // Prefix header for all source files of the 'TestXcodeColors' target in the 'TestXcodeColors' project 9 | // 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #endif 14 | -------------------------------------------------------------------------------- /Demos/TestXcodeColors/Mobile/TextXcodeColors/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // TextXcodeColors 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @interface ViewController : UIViewController 11 | { 12 | IBOutlet UILabel *label; 13 | } 14 | 15 | @property (nonatomic, readonly) UILabel *label; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Demos/CaptureASL/CaptureASL/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // CaptureASL 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | #import "AppDelegate.h" 10 | 11 | int main(int argc, char * argv[]) 12 | { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Demos/UniversalApp/UniversalApp_Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // UniversalApp_Prefix.pch 3 | // UniversalApp 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | // 8 | // Prefix header for all source files of the 'UniversalApp' target in the 'UniversalApp' project 9 | // 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # macOS 2 | .DS_Store 3 | 4 | # Xcode / SPM 5 | /.build 6 | /Packages 7 | /*.xcodeproj 8 | xcuserdata/ 9 | DerivedData/ 10 | .swiftpm/ 11 | 12 | # Carthage Project 13 | !Lumberjack.xcodeproj 14 | 15 | # CocoaPods (podspec is generated) 16 | CocoaLumberjack.podspec 17 | 18 | # Carthage 19 | Carthage/Build 20 | 21 | # Lumberjack generated files 22 | LumberjackUser*.h 23 | -------------------------------------------------------------------------------- /Configs/App-Release.xcconfig: -------------------------------------------------------------------------------- 1 | // Configuration settings file format documentation can be found at: 2 | // https://help.apple.com/xcode/#/dev745c5c974 3 | 4 | #include "Module-Release.xcconfig" 5 | #include "App-Shared.xcconfig" 6 | 7 | // Space-separated list of preprocessor macros of the form `foo` or `foo=bar` 8 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) DD_LOG_LEVEL=DDLogLevelWarning 9 | -------------------------------------------------------------------------------- /Demos/RegisteredDynamicLogging/Mobile/RegisteredLoggingTest/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // RegisteredLoggingTest 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | int main(int argc, char *argv[]) 11 | { 12 | @autoreleasepool { 13 | int retVal = UIApplicationMain(argc, argv, nil, nil); 14 | return retVal; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Demos/DispatchQueueLogger/DispatchQueueLogger/DispatchQueueLogger-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // DispatchQueueLogger-Prefix.pch 3 | // DispatchQueueLogger 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | // 8 | // Prefix header for all source files of the 'DispatchQueueLogger' target in the 'DispatchQueueLogger' project 9 | // 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #endif 14 | -------------------------------------------------------------------------------- /Demos/RegisteredDynamicLogging/Desktop/RegisteredLoggingTest/RegisteredLoggingTest-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // RegisteredLoggingTest 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | // 8 | // Prefix header for all source files of the 'RegisteredLoggingTest' target in the 'RegisteredLoggingTest' project 9 | // 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #endif 14 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | 3 | updates: 4 | - package-ecosystem: github-actions 5 | directory: / 6 | open-pull-requests-limit: 10 7 | schedule: 8 | interval: weekly 9 | day: tuesday 10 | 11 | - package-ecosystem: swift 12 | directory: / 13 | open-pull-requests-limit: 10 14 | schedule: 15 | interval: weekly 16 | day: tuesday 17 | -------------------------------------------------------------------------------- /Demos/Benchmark/Mobile/BenchmarkIPhone_Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // BenchmarkIPhone_Prefix.pch 3 | // BenchmarkIPhone 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | // 8 | // Prefix header for all source files of the 'BenchmarkIPhone' target in the 'BenchmarkIPhone' project 9 | // 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /Demos/WebServerIPhone/WebServerIPhone_Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // WenServerIPhone_Prefix.pch 3 | // WebServerIPhone 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | // 8 | // Prefix header for all source files of the 'WebServerIPhone' target in the 'WebServerIPhone' project 9 | // 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /Demos/TestXcodeColors/Mobile/TextXcodeColors/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // TextXcodeColors 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char *argv[]) 13 | { 14 | @autoreleasepool { 15 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Demos/ContextFilter/ContextFilterAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // ContextFilterAppDelegate.h 3 | // ContextFilter 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @interface ContextFilterAppDelegate : NSObject { 11 | NSWindow *__unsafe_unretained window; 12 | } 13 | 14 | @property (unsafe_unretained) IBOutlet NSWindow *window; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Demos/WebServerIPhone/Web/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Lumberjack Logging Framework 4 | 5 | 6 | 7 |

Lumberjack Logging Framework

8 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Demos/CustomFormatters/ReadMe.txt: -------------------------------------------------------------------------------- 1 | This Xcode project provides a sample custom formatter. It shows how one can customize the output format of a log message. This particular example demonstrates prefixing the file name, function, and line number before a log message. 2 | 3 | For more information on custom formatters, see the Wiki article: 4 | https://github.com/CocoaLumberjack/CocoaLumberjack/wiki/CustomFormatters 5 | -------------------------------------------------------------------------------- /Demos/CustomLogLevels/ReadMe.txt: -------------------------------------------------------------------------------- 1 | This Xcode project demonstrates how you can customize the number of log levels, as well as the log level names. This particular project demonstrates using the following levels: 2 | 3 | Fatal 4 | Error 5 | Warn 6 | Notice 7 | Info 8 | Debug 9 | 10 | For more information, see the Wiki article: 11 | https://github.com/CocoaLumberjack/CocoaLumberjack/wiki/CustomLogLevels 12 | -------------------------------------------------------------------------------- /Demos/GlobalLogLevel/GlobalLogLevelAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // GlobalLogLevelAppDelegate.h 3 | // GlobalLogLevel 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @interface GlobalLogLevelAppDelegate : NSObject { 11 | NSWindow *__unsafe_unretained window; 12 | } 13 | 14 | @property (unsafe_unretained) IBOutlet NSWindow *window; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Demos/LogFileCompressor/CompressingLogFileManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // CompressingLogFileManager.h 3 | // LogFileCompressor 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | #import 10 | 11 | @interface CompressingLogFileManager : DDLogFileManagerDefault 12 | { 13 | BOOL upToDate; 14 | BOOL isCompressing; 15 | } 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Demos/CLI/CLI.xcodeproj/xcshareddata/IDETemplateMacros.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FILEHEADER 6 | 7 | // ___FILENAME___ 8 | // ___TARGETNAME___ 9 | // 10 | // CocoaLumberjack Demos 11 | // 12 | 13 | 14 | -------------------------------------------------------------------------------- /Demos/CustomLogLevels/CustomLogLevelsAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // CustomLogLevelsAppDelegate.h 3 | // CustomLogLevels 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @interface CustomLogLevelsAppDelegate : NSObject { 11 | NSWindow *__unsafe_unretained window; 12 | } 13 | 14 | @property (unsafe_unretained) IBOutlet NSWindow *window; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Demos/OverflowTestMac/OverflowTestMacAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // OverflowTestMacAppDelegate.h 3 | // OverflowTestMac 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @interface OverflowTestMacAppDelegate : NSObject { 11 | NSWindow *__unsafe_unretained window; 12 | } 13 | 14 | @property (unsafe_unretained) IBOutlet NSWindow *window; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Demos/CustomFormatters/CustomFormattersAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // CustomFormattersAppDelegate.h 3 | // CustomFormatters 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @interface CustomFormattersAppDelegate : NSObject { 11 | NSWindow *__unsafe_unretained window; 12 | } 13 | 14 | @property (unsafe_unretained) IBOutlet NSWindow *window; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Configs/App-Shared.xcconfig: -------------------------------------------------------------------------------- 1 | // Configuration settings file format documentation can be found at: 2 | // https://help.apple.com/xcode/#/dev745c5c974 3 | 4 | // Code will load on this and later versions of watchOS. Framework APIs that are unavailable in earlier versions will be weak-linked; your code should check for null function pointers or specific system versions before calling newer APIs. 5 | WATCHOS_DEPLOYMENT_TARGET = 5.0 6 | -------------------------------------------------------------------------------- /Benchmarking/Benchmarking.xcodeproj/xcshareddata/IDETemplateMacros.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FILEHEADER 6 | 7 | // ___FILENAME___ 8 | // ___TARGETNAME___ 9 | // 10 | // CocoaLumberjack Benchmarking 11 | // 12 | 13 | -------------------------------------------------------------------------------- /Demos/CaptureASL/CaptureASL.xcodeproj/xcshareddata/IDETemplateMacros.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FILEHEADER 6 | 7 | // ___FILENAME___ 8 | // ___TARGETNAME___ 9 | // 10 | // CocoaLumberjack Demos 11 | // 12 | 13 | 14 | -------------------------------------------------------------------------------- /Integration/macOSSwiftIntegration/macOSSwiftIntegration.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.files.user-selected.read-only 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Demos/ContextFilter/ContextFilter.xcodeproj/xcshareddata/IDETemplateMacros.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FILEHEADER 6 | 7 | // ___FILENAME___ 8 | // ___TARGETNAME___ 9 | // 10 | // CocoaLumberjack Demos 11 | // 12 | 13 | 14 | -------------------------------------------------------------------------------- /Demos/SQLiteLogger/SQLiteLogger.xcodeproj/xcshareddata/IDETemplateMacros.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FILEHEADER 6 | 7 | // ___FILENAME___ 8 | // ___TARGETNAME___ 9 | // 10 | // CocoaLumberjack Demos 11 | // 12 | 13 | 14 | -------------------------------------------------------------------------------- /Demos/TestXcodeColors/Mobile/TextXcodeColors/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // TextXcodeColors 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @class ViewController; 11 | 12 | @interface AppDelegate : UIResponder 13 | 14 | @property (strong, nonatomic) UIWindow *window; 15 | @property (strong, nonatomic) ViewController *viewController; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Demos/UniversalApp/UniversalApp.xcodeproj/xcshareddata/IDETemplateMacros.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FILEHEADER 6 | 7 | // ___FILENAME___ 8 | // ___TARGETNAME___ 9 | // 10 | // CocoaLumberjack Demos 11 | // 12 | 13 | 14 | -------------------------------------------------------------------------------- /Demos/Benchmark/Desktop/BenchmarkMac.xcodeproj/xcshareddata/IDETemplateMacros.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FILEHEADER 6 | 7 | // ___FILENAME___ 8 | // ___TARGETNAME___ 9 | // 10 | // CocoaLumberjack Demos 11 | // 12 | 13 | 14 | -------------------------------------------------------------------------------- /Demos/Benchmark/Mobile/BenchmarkIPhone.xcodeproj/xcshareddata/IDETemplateMacros.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FILEHEADER 6 | 7 | // ___FILENAME___ 8 | // ___TARGETNAME___ 9 | // 10 | // CocoaLumberjack Demos 11 | // 12 | 13 | 14 | -------------------------------------------------------------------------------- /Demos/CoreDataLogger/CoreDataLogger.xcodeproj/xcshareddata/IDETemplateMacros.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FILEHEADER 6 | 7 | // ___FILENAME___ 8 | // ___TARGETNAME___ 9 | // 10 | // CocoaLumberjack Demos 11 | // 12 | 13 | 14 | -------------------------------------------------------------------------------- /Demos/CustomLogLevels/CustomLogLevels.xcodeproj/xcshareddata/IDETemplateMacros.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FILEHEADER 6 | 7 | // ___FILENAME___ 8 | // ___TARGETNAME___ 9 | // 10 | // CocoaLumberjack Demos 11 | // 12 | 13 | 14 | -------------------------------------------------------------------------------- /Demos/GlobalLogLevel/GlobalLogLevel.xcodeproj/xcshareddata/IDETemplateMacros.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FILEHEADER 6 | 7 | // ___FILENAME___ 8 | // ___TARGETNAME___ 9 | // 10 | // CocoaLumberjack Demos 11 | // 12 | 13 | 14 | -------------------------------------------------------------------------------- /Demos/OverflowTestMac/OverflowTestMac.xcodeproj/xcshareddata/IDETemplateMacros.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FILEHEADER 6 | 7 | // ___FILENAME___ 8 | // ___TARGETNAME___ 9 | // 10 | // CocoaLumberjack Demos 11 | // 12 | 13 | 14 | -------------------------------------------------------------------------------- /Demos/RollingTestMac/RollingTestMac.xcodeproj/xcshareddata/IDETemplateMacros.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FILEHEADER 6 | 7 | // ___FILENAME___ 8 | // ___TARGETNAME___ 9 | // 10 | // CocoaLumberjack Demos 11 | // 12 | 13 | 14 | -------------------------------------------------------------------------------- /Demos/WebServerIPhone/WebServerIPhone.xcodeproj/xcshareddata/IDETemplateMacros.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FILEHEADER 6 | 7 | // ___FILENAME___ 8 | // ___TARGETNAME___ 9 | // 10 | // CocoaLumberjack Demos 11 | // 12 | 13 | 14 | -------------------------------------------------------------------------------- /Demos/CustomFormatters/CustomFormatters.xcodeproj/xcshareddata/IDETemplateMacros.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FILEHEADER 6 | 7 | // ___FILENAME___ 8 | // ___TARGETNAME___ 9 | // 10 | // CocoaLumberjack Demos 11 | // 12 | 13 | 14 | -------------------------------------------------------------------------------- /Demos/FineGrainedLogging/FineGrainedLogging.xcodeproj/xcshareddata/IDETemplateMacros.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FILEHEADER 6 | 7 | // ___FILENAME___ 8 | // ___TARGETNAME___ 9 | // 10 | // CocoaLumberjack Demos 11 | // 12 | 13 | 14 | -------------------------------------------------------------------------------- /Demos/GlobalLogLevel/Stuff.m: -------------------------------------------------------------------------------- 1 | // 2 | // Stuff.m 3 | // GlobalLogLevel 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import "Stuff.h" 9 | #import "MyLogging.h" 10 | 11 | @implementation Stuff 12 | 13 | + (void)doStuff 14 | { 15 | DDLogError(@"%@: Error", THIS_FILE); 16 | DDLogWarn(@"%@: Warn", THIS_FILE); 17 | DDLogInfo(@"%@: Info", THIS_FILE); 18 | DDLogVerbose(@"%@: Verbose", THIS_FILE); 19 | } 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Demos/LogFileCompressor/LogFileCompressor.xcodeproj/xcshareddata/IDETemplateMacros.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FILEHEADER 6 | 7 | // ___FILENAME___ 8 | // ___TARGETNAME___ 9 | // 10 | // CocoaLumberjack Demos 11 | // 12 | 13 | 14 | -------------------------------------------------------------------------------- /Demos/PerUserLogLevels/PerUserLogLevels.xcodeproj/xcshareddata/IDETemplateMacros.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FILEHEADER 6 | 7 | // ___FILENAME___ 8 | // ___TARGETNAME___ 9 | // 10 | // CocoaLumberjack Demos 11 | // 12 | 13 | 14 | -------------------------------------------------------------------------------- /Demos/DispatchQueueLogger/DispatchQueueLogger.xcodeproj/xcshareddata/IDETemplateMacros.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FILEHEADER 6 | 7 | // ___FILENAME___ 8 | // ___TARGETNAME___ 9 | // 10 | // CocoaLumberjack Demos 11 | // 12 | 13 | 14 | -------------------------------------------------------------------------------- /Demos/TestXcodeColors/Desktop/TestXcodeColors.xcodeproj/xcshareddata/IDETemplateMacros.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FILEHEADER 6 | 7 | // ___FILENAME___ 8 | // ___TARGETNAME___ 9 | // 10 | // CocoaLumberjack Demos 11 | // 12 | 13 | 14 | -------------------------------------------------------------------------------- /Demos/TestXcodeColors/Mobile/TextXcodeColors.xcodeproj/xcshareddata/IDETemplateMacros.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FILEHEADER 6 | 7 | // ___FILENAME___ 8 | // ___TARGETNAME___ 9 | // 10 | // CocoaLumberjack Demos 11 | // 12 | 13 | 14 | -------------------------------------------------------------------------------- /Demos/Benchmark/Desktop/BenchmarkMac/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // BenchmarkMac 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import "AppDelegate.h" 9 | #import "PerformanceTesting.h" 10 | 11 | @implementation AppDelegate 12 | 13 | @synthesize window = _window; 14 | 15 | - (void)applicationDidFinishLaunching:(NSNotification *)aNotification 16 | { 17 | [PerformanceTesting startPerformanceTests]; 18 | } 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Demos/WebServerIPhone/Vendor/CocoaHTTPServer/Categories/DDNumber.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | 4 | @interface NSNumber (DDNumber) 5 | 6 | + (BOOL)parseString:(NSString *)str intoSInt64:(SInt64 *)pNum; 7 | + (BOOL)parseString:(NSString *)str intoUInt64:(UInt64 *)pNum; 8 | 9 | + (BOOL)parseString:(NSString *)str intoNSInteger:(NSInteger *)pNum; 10 | + (BOOL)parseString:(NSString *)str intoNSUInteger:(NSUInteger *)pNum; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /Package.resolved: -------------------------------------------------------------------------------- 1 | { 2 | "originHash" : "b0930a81330aeb03b7dbd0ba4250562c0ae1e72b9088a7161b5d5ce00142176a", 3 | "pins" : [ 4 | { 5 | "identity" : "swift-log", 6 | "kind" : "remoteSourceControl", 7 | "location" : "https://github.com/apple/swift-log", 8 | "state" : { 9 | "revision" : "ce592ae52f982c847a4efc0dd881cc9eb32d29f2", 10 | "version" : "1.6.4" 11 | } 12 | } 13 | ], 14 | "version" : 3 15 | } 16 | -------------------------------------------------------------------------------- /.github/workflows/cocoapods-trunk-session-keepalive.yml: -------------------------------------------------------------------------------- 1 | name: CocoaPods Trunk Session Keep-Alive 2 | 3 | on: 4 | schedule: 5 | # every Wednesday at 09:23 UTC 6 | - cron: '23 09 * * 3' 7 | 8 | jobs: 9 | session-keepalive: 10 | runs-on: macos-15 11 | steps: 12 | - name: Keep CocoaPods Trunk Session Alive 13 | env: 14 | COCOAPODS_TRUNK_TOKEN: ${{ secrets.COCOAPODS_TRUNK_TOKEN }} 15 | run: pod trunk me --silent 16 | -------------------------------------------------------------------------------- /Demos/RegisteredDynamicLogging/Desktop/RegisteredLoggingTest.xcodeproj/xcshareddata/IDETemplateMacros.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FILEHEADER 6 | 7 | // ___FILENAME___ 8 | // ___TARGETNAME___ 9 | // 10 | // CocoaLumberjack Demos 11 | // 12 | 13 | 14 | -------------------------------------------------------------------------------- /Demos/RegisteredDynamicLogging/Mobile/RegisteredLoggingTest.xcodeproj/xcshareddata/IDETemplateMacros.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FILEHEADER 6 | 7 | // ___FILENAME___ 8 | // ___TARGETNAME___ 9 | // 10 | // CocoaLumberjack Demos 11 | // 12 | 13 | 14 | -------------------------------------------------------------------------------- /Demos/RegisteredDynamicLogging/Desktop/RegisteredLoggingTest/RegisteredLoggingTestAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // RegisteredLoggingTestAppDelegate.h 3 | // RegisteredLoggingTest 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @interface RegisteredLoggingTestAppDelegate : NSObject { 11 | NSWindow *__unsafe_unretained window; 12 | } 13 | 14 | @property (unsafe_unretained) IBOutlet NSWindow *window; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Demos/RollingTestMac/RollingTestMacAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // RollingTestMacAppDelegate.h 3 | // RollingTestMac 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @class DDFileLogger; 11 | 12 | @interface RollingTestMacAppDelegate : NSObject 13 | { 14 | DDFileLogger *fileLogger; 15 | 16 | NSWindow *__unsafe_unretained window; 17 | } 18 | 19 | @property (unsafe_unretained) IBOutlet NSWindow *window; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Demos/SQLiteLogger/SQLiteLogger/SQLiteLoggerAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // SQLiteLoggerAppDelegate.h 3 | // SQLiteLogger 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @class FMDBLogger; 11 | 12 | @interface SQLiteLoggerAppDelegate : NSObject { 13 | @private 14 | FMDBLogger *sqliteLogger; 15 | NSWindow *__unsafe_unretained window; 16 | } 17 | 18 | @property (unsafe_unretained) IBOutlet NSWindow *window; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Demos/CoreDataLogger/CoreDataLogger/LogEntry.h: -------------------------------------------------------------------------------- 1 | // 2 | // LogEntry.h 3 | // CoreDataLogger 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | #import 10 | 11 | @interface LogEntry : NSManagedObject 12 | 13 | @property (nonatomic, strong) NSNumber * context; 14 | @property (nonatomic, strong) NSNumber * level; 15 | @property (nonatomic, strong) NSString * message; 16 | @property (nonatomic, strong) NSDate * timestamp; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Demos/LogFileCompressor/LogFileCompressorAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // LogFileCompressorAppDelegate.h 3 | // LogFileCompressor 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @class DDFileLogger; 11 | 12 | @interface LogFileCompressorAppDelegate : NSObject 13 | { 14 | DDFileLogger *fileLogger; 15 | 16 | NSWindow *__unsafe_unretained window; 17 | } 18 | 19 | @property (unsafe_unretained) IBOutlet NSWindow *window; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Demos/CaptureASL/CaptureASL/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "29x29", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "40x40", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "60x60", 16 | "scale" : "2x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Demos/CoreDataLogger/CoreDataLogger/CoreDataLoggerAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // CoreDataLoggerAppDelegate.h 3 | // CoreDataLogger 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @class CoreDataLogger; 11 | 12 | @interface CoreDataLoggerAppDelegate : NSObject { 13 | @private 14 | CoreDataLogger *coreDataLogger; 15 | NSWindow *__unsafe_unretained window; 16 | } 17 | 18 | @property (unsafe_unretained) IBOutlet NSWindow *window; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /.github/workflows/danger.yml: -------------------------------------------------------------------------------- 1 | name: Danger 2 | 3 | on: 4 | pull_request_target: 5 | branches: [master] 6 | 7 | env: 8 | LC_CTYPE: en_US.UTF-8 9 | LANG: en_US.UTF-8 10 | 11 | jobs: 12 | run-danger: 13 | runs-on: ubuntu-latest 14 | steps: 15 | - uses: actions/checkout@v5 16 | with: 17 | fetch-depth: 0 18 | - uses: danger/swift@3.22.0 19 | with: 20 | args: --failOnErrors --no-publish-check 21 | env: 22 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 23 | -------------------------------------------------------------------------------- /Configs/App-Debug.xcconfig: -------------------------------------------------------------------------------- 1 | // Configuration settings file format documentation can be found at: 2 | // https://help.apple.com/xcode/#/dev745c5c974 3 | 4 | #include "Module-Debug.xcconfig" 5 | #include "App-Shared.xcconfig" 6 | 7 | // Space-separated list of preprocessor macros of the form `foo` or `foo=bar` 8 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) DEBUG=1 DD_LOG_LEVEL=DDLogLevelAll 9 | 10 | // A list of compilation conditions to enable for conditional compilation expressions. 11 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG 12 | -------------------------------------------------------------------------------- /Documentation/AppCode-support.md: -------------------------------------------------------------------------------- 1 | CocoaLumberjack works by default in AppCode, but colours are not supported out of the box. To enable colours: 2 | 3 | 1. Install the 'Grep Console' plugin (http://plugins.jetbrains.com/plugin/7125) 4 | 2. Enable ANSI colouring (Settings > Grep Console) 5 | 3. Go to Run > Edit configurations... 6 | 4. Add TERM=color to the 'Environment variables' (edit them by clicking on the ellipsis) 7 | 5. `[[DDTTYLogger sharedInstance] setColorsEnabled:YES];` 8 | 9 | Kudos to @davidlawson for this documentation. 10 | -------------------------------------------------------------------------------- /Demos/OverflowTestMac/ReadMe.txt: -------------------------------------------------------------------------------- 1 | This Xcode project demonstrates how the logging framework handles overflow. That is, if asynchronous logging is enabled, and the application spits out log messages faster than the framework can process them, then what should the framework do? 2 | 3 | The framework can optionally enforce a maximum queue size. This project tests this max queue size, and ensures the framework is properly enforcing it. 4 | 5 | Detailed information can be found in DDLog's queueLogMessage:: method. 6 | 7 | This is a unit test project. 8 | -------------------------------------------------------------------------------- /Demos/FineGrainedLogging/FineGrainedLoggingAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // FineGrainedLoggingAppDelegate.h 3 | // FineGrainedLogging 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @class TimerOne; 11 | @class TimerTwo; 12 | 13 | @interface FineGrainedLoggingAppDelegate : NSObject 14 | { 15 | TimerOne *timerOne; 16 | TimerTwo *timerTwo; 17 | 18 | NSWindow *__unsafe_unretained window; 19 | } 20 | 21 | @property (unsafe_unretained) IBOutlet NSWindow *window; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Demos/CaptureASL/CaptureASL/CaptureASL-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // CaptureASL-Prefix.pch 3 | // CaptureASL 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | // 8 | // Prefix header 9 | // 10 | // The contents of this file are implicitly included at the beginning of every source file. 11 | // 12 | 13 | #import 14 | 15 | #ifndef __IPHONE_5_0 16 | #warning "This project uses features only available in iOS SDK 5.0 and later." 17 | #endif 18 | 19 | #ifdef __OBJC__ 20 | #import 21 | #import 22 | #endif 23 | -------------------------------------------------------------------------------- /Demos/RegisteredDynamicLogging/Mobile/RegisteredLoggingTest/RegisteredLoggingTestAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // RegisteredLoggingTestAppDelegate.h 3 | // RegisteredLoggingTest 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @class RegisteredLoggingTestViewController; 11 | 12 | @interface RegisteredLoggingTestAppDelegate : NSObject 13 | 14 | @property (nonatomic, strong) IBOutlet UIWindow *window; 15 | @property (nonatomic, strong) IBOutlet RegisteredLoggingTestViewController *viewController; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Demos/TestXcodeColors/Mobile/TextXcodeColors/TextXcodeColors-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // TextXcodeColors-Prefix.pch 3 | // TextXcodeColors 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | // 8 | // Prefix header for all source files of the 'TextXcodeColors' target in the 'TextXcodeColors' project 9 | // 10 | 11 | #import 12 | 13 | #ifndef __IPHONE_4_0 14 | #warning "This project uses features only available in iOS SDK 4.0 and later." 15 | #endif 16 | 17 | #ifdef __OBJC__ 18 | #import 19 | #import 20 | #endif 21 | -------------------------------------------------------------------------------- /Demos/UniversalApp/Classes/UniversalAppAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // UniversalAppAppDelegate.h 3 | // UniversalApp 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @class UniversalAppViewController; 11 | 12 | @interface UniversalAppAppDelegate : NSObject { 13 | UIWindow *window; 14 | UniversalAppViewController *viewController; 15 | } 16 | 17 | @property (nonatomic, strong) IBOutlet UIWindow *window; 18 | @property (nonatomic, strong) IBOutlet UniversalAppViewController *viewController; 19 | 20 | @end 21 | 22 | -------------------------------------------------------------------------------- /Demos/Benchmark/Mobile/Classes/BenchmarkIPhoneAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // BenchmarkIPhoneAppDelegate.h 3 | // BenchmarkIPhone 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @class BenchmarkIPhoneViewController; 11 | 12 | @interface BenchmarkIPhoneAppDelegate : NSObject 13 | { 14 | UIWindow *window; 15 | BenchmarkIPhoneViewController *viewController; 16 | } 17 | 18 | @property (nonatomic, strong) IBOutlet UIWindow *window; 19 | @property (nonatomic, strong) IBOutlet BenchmarkIPhoneViewController *viewController; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Tests/Helpers.md: -------------------------------------------------------------------------------- 1 | This document contains helper functions and tricks which helps in migration from external libraries to XCTest. 2 | 3 | # Snippets find-and-replace 4 | ## Expecta matchers 5 | 6 | find: 7 | ```perl 8 | "expect\((.+?)\).to.equal\((.+?)\)" 9 | ``` 10 | 11 | replace: 12 | ```perl 13 | "XCTAssertEqualObjects($1, $2)" 14 | ``` 15 | 16 | ## __auto_type inference 17 | 18 | find: 19 | ```perl 20 | "(\w+(?!Mutable)\w+)\s*\*\s*(\w+)\s*=\s*(?!nil)" 21 | ``` 22 | 23 | replace: ( notice trailing space. it is necessary to not break existing formatting ) 24 | ```perl 25 | "__auto_type $2 = " 26 | ``` 27 | -------------------------------------------------------------------------------- /Demos/NonArcTest/NonArcTest/en.lproj/Credits.rtf: -------------------------------------------------------------------------------- 1 | {\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} 2 | {\colortbl;\red255\green255\blue255;} 3 | \paperw9840\paperh8400 4 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural 5 | 6 | \f0\b\fs24 \cf0 Engineering: 7 | \b0 \ 8 | Some people\ 9 | \ 10 | 11 | \b Human Interface Design: 12 | \b0 \ 13 | Some other people\ 14 | \ 15 | 16 | \b Testing: 17 | \b0 \ 18 | Hopefully not nobody\ 19 | \ 20 | 21 | \b Documentation: 22 | \b0 \ 23 | Whoever\ 24 | \ 25 | 26 | \b With special thanks to: 27 | \b0 \ 28 | Mom\ 29 | } 30 | -------------------------------------------------------------------------------- /Demos/RegisteredDynamicLogging/Mobile/RegisteredLoggingTest/RegisteredLoggingTest-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // RegisteredLoggingTest-Prefix.pch 3 | // RegisteredLoggingTest 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | // 8 | // Prefix header for all source files of the 'RegisteredLoggingTest' target in the 'RegisteredLoggingTest' project 9 | // 10 | 11 | #import 12 | 13 | #ifndef __IPHONE_3_0 14 | #warning "This project uses features only available in iPhone SDK 3.0 and later." 15 | #endif 16 | 17 | #ifdef __OBJC__ 18 | #import 19 | #import 20 | #endif 21 | -------------------------------------------------------------------------------- /Demos/CoreDataLogger/CoreDataLogger/en.lproj/Credits.rtf: -------------------------------------------------------------------------------- 1 | {\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} 2 | {\colortbl;\red255\green255\blue255;} 3 | \paperw9840\paperh8400 4 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural 5 | 6 | \f0\b\fs24 \cf0 Engineering: 7 | \b0 \ 8 | Some people\ 9 | \ 10 | 11 | \b Human Interface Design: 12 | \b0 \ 13 | Some other people\ 14 | \ 15 | 16 | \b Testing: 17 | \b0 \ 18 | Hopefully not nobody\ 19 | \ 20 | 21 | \b Documentation: 22 | \b0 \ 23 | Whoever\ 24 | \ 25 | 26 | \b With special thanks to: 27 | \b0 \ 28 | Mom\ 29 | } 30 | -------------------------------------------------------------------------------- /Demos/SQLiteLogger/SQLiteLogger/en.lproj/Credits.rtf: -------------------------------------------------------------------------------- 1 | {\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} 2 | {\colortbl;\red255\green255\blue255;} 3 | \paperw9840\paperh8400 4 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural 5 | 6 | \f0\b\fs24 \cf0 Engineering: 7 | \b0 \ 8 | Some people\ 9 | \ 10 | 11 | \b Human Interface Design: 12 | \b0 \ 13 | Some other people\ 14 | \ 15 | 16 | \b Testing: 17 | \b0 \ 18 | Hopefully not nobody\ 19 | \ 20 | 21 | \b Documentation: 22 | \b0 \ 23 | Whoever\ 24 | \ 25 | 26 | \b With special thanks to: 27 | \b0 \ 28 | Mom\ 29 | } 30 | -------------------------------------------------------------------------------- /Demos/Benchmark/Desktop/BenchmarkMac/en.lproj/Credits.rtf: -------------------------------------------------------------------------------- 1 | {\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} 2 | {\colortbl;\red255\green255\blue255;} 3 | \paperw9840\paperh8400 4 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural 5 | 6 | \f0\b\fs24 \cf0 Engineering: 7 | \b0 \ 8 | Some people\ 9 | \ 10 | 11 | \b Human Interface Design: 12 | \b0 \ 13 | Some other people\ 14 | \ 15 | 16 | \b Testing: 17 | \b0 \ 18 | Hopefully not nobody\ 19 | \ 20 | 21 | \b Documentation: 22 | \b0 \ 23 | Whoever\ 24 | \ 25 | 26 | \b With special thanks to: 27 | \b0 \ 28 | Mom\ 29 | } 30 | -------------------------------------------------------------------------------- /Demos/CaptureASL/CaptureASL/Images.xcassets/LaunchImage.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "orientation" : "portrait", 5 | "idiom" : "iphone", 6 | "extent" : "full-screen", 7 | "minimum-system-version" : "7.0", 8 | "scale" : "2x" 9 | }, 10 | { 11 | "orientation" : "portrait", 12 | "idiom" : "iphone", 13 | "subtype" : "retina4", 14 | "extent" : "full-screen", 15 | "minimum-system-version" : "7.0", 16 | "scale" : "2x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Demos/PerUserLogLevels/PerUserLogLevels/en.lproj/Credits.rtf: -------------------------------------------------------------------------------- 1 | {\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} 2 | {\colortbl;\red255\green255\blue255;} 3 | \paperw9840\paperh8400 4 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural 5 | 6 | \f0\b\fs24 \cf0 Engineering: 7 | \b0 \ 8 | Some people\ 9 | \ 10 | 11 | \b Human Interface Design: 12 | \b0 \ 13 | Some other people\ 14 | \ 15 | 16 | \b Testing: 17 | \b0 \ 18 | Hopefully not nobody\ 19 | \ 20 | 21 | \b Documentation: 22 | \b0 \ 23 | Whoever\ 24 | \ 25 | 26 | \b With special thanks to: 27 | \b0 \ 28 | Mom\ 29 | } 30 | -------------------------------------------------------------------------------- /Demos/DispatchQueueLogger/DispatchQueueLogger/en.lproj/Credits.rtf: -------------------------------------------------------------------------------- 1 | {\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} 2 | {\colortbl;\red255\green255\blue255;} 3 | \paperw9840\paperh8400 4 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural 5 | 6 | \f0\b\fs24 \cf0 Engineering: 7 | \b0 \ 8 | Some people\ 9 | \ 10 | 11 | \b Human Interface Design: 12 | \b0 \ 13 | Some other people\ 14 | \ 15 | 16 | \b Testing: 17 | \b0 \ 18 | Hopefully not nobody\ 19 | \ 20 | 21 | \b Documentation: 22 | \b0 \ 23 | Whoever\ 24 | \ 25 | 26 | \b With special thanks to: 27 | \b0 \ 28 | Mom\ 29 | } 30 | -------------------------------------------------------------------------------- /Demos/TestXcodeColors/Desktop/TestXcodeColors/en.lproj/Credits.rtf: -------------------------------------------------------------------------------- 1 | {\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} 2 | {\colortbl;\red255\green255\blue255;} 3 | \paperw9840\paperh8400 4 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural 5 | 6 | \f0\b\fs24 \cf0 Engineering: 7 | \b0 \ 8 | Some people\ 9 | \ 10 | 11 | \b Human Interface Design: 12 | \b0 \ 13 | Some other people\ 14 | \ 15 | 16 | \b Testing: 17 | \b0 \ 18 | Hopefully not nobody\ 19 | \ 20 | 21 | \b Documentation: 22 | \b0 \ 23 | Whoever\ 24 | \ 25 | 26 | \b With special thanks to: 27 | \b0 \ 28 | Mom\ 29 | } 30 | -------------------------------------------------------------------------------- /Demos/WebServerIPhone/Vendor/CocoaHTTPServer/Responses/HTTPFileResponse.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import "HTTPResponse.h" 3 | 4 | @class HTTPConnection; 5 | 6 | 7 | @interface HTTPFileResponse : NSObject 8 | { 9 | HTTPConnection *connection; 10 | 11 | NSString *filePath; 12 | UInt64 fileLength; 13 | UInt64 fileOffset; 14 | 15 | BOOL aborted; 16 | 17 | int fileFD; 18 | void *buffer; 19 | NSUInteger bufferSize; 20 | } 21 | 22 | - (id)initWithFilePath:(NSString *)filePath forConnection:(HTTPConnection *)connection; 23 | - (NSString *)filePath; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /Demos/WebServerIPhone/Web/styles.css: -------------------------------------------------------------------------------- 1 | table { 2 | margin-left: 10px; 3 | } 4 | 5 | td { 6 | background-color: pink; 7 | padding: 5px; 8 | } 9 | 10 | body { 11 | margin: 0; 12 | } 13 | 14 | #status { 15 | height: 20px; 16 | width: 100%; 17 | color: #fff; 18 | background-color: orange; 19 | font-weight: bold; 20 | padding: 5px; 21 | text-align: center; 22 | } 23 | 24 | #container { 25 | padding: 20px; 26 | } 27 | 28 | ul { 29 | margin-top: 25px; 30 | } 31 | 32 | h1 { 33 | font-size: 2em; 34 | font-family: helvetica; 35 | margin: 10px; 36 | } 37 | 38 | ul a:link, ul a:visited { 39 | font-size: 1.5em; 40 | } 41 | -------------------------------------------------------------------------------- /Demos/RegisteredDynamicLogging/Desktop/RegisteredLoggingTest/en.lproj/Credits.rtf: -------------------------------------------------------------------------------- 1 | {\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} 2 | {\colortbl;\red255\green255\blue255;} 3 | \paperw9840\paperh8400 4 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural 5 | 6 | \f0\b\fs24 \cf0 Engineering: 7 | \b0 \ 8 | Some people\ 9 | \ 10 | 11 | \b Human Interface Design: 12 | \b0 \ 13 | Some other people\ 14 | \ 15 | 16 | \b Testing: 17 | \b0 \ 18 | Hopefully not nobody\ 19 | \ 20 | 21 | \b Documentation: 22 | \b0 \ 23 | Whoever\ 24 | \ 25 | 26 | \b With special thanks to: 27 | \b0 \ 28 | Mom\ 29 | } 30 | -------------------------------------------------------------------------------- /Demos/CustomFormatters/TestFormatter.m: -------------------------------------------------------------------------------- 1 | // 2 | // TestFormatter.m 3 | // CustomFormatters 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import "TestFormatter.h" 9 | 10 | /** 11 | * For more information about creating custom formatters, see the wiki article: 12 | * https://github.com/CocoaLumberjack/CocoaLumberjack/wiki/CustomFormatters 13 | **/ 14 | @implementation TestFormatter 15 | 16 | - (NSString *)formatLogMessage:(DDLogMessage *)logMessage 17 | { 18 | return [NSString stringWithFormat:@"%@ | %@ @ %@ | %@", 19 | [logMessage fileName], logMessage->_function, @(logMessage->_line), logMessage->_message]; 20 | } 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Demos/Benchmark/Mobile/Classes/BenchmarkIPhoneAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // BenchmarkIPhoneAppDelegate.m 3 | // BenchmarkIPhone 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import "BenchmarkIPhoneAppDelegate.h" 9 | #import "BenchmarkIPhoneViewController.h" 10 | #import "PerformanceTesting.h" 11 | 12 | @implementation BenchmarkIPhoneAppDelegate 13 | 14 | @synthesize window; 15 | @synthesize viewController; 16 | 17 | - (void)applicationDidFinishLaunching:(UIApplication *)application 18 | { 19 | window.rootViewController = viewController; 20 | [window makeKeyAndVisible]; 21 | 22 | [PerformanceTesting startPerformanceTests]; 23 | } 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /Integration/watchOSSwiftIntegration Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "watch", 5 | "scale" : "2x", 6 | "screen-width" : "<=145" 7 | }, 8 | { 9 | "idiom" : "watch", 10 | "scale" : "2x", 11 | "screen-width" : ">161" 12 | }, 13 | { 14 | "idiom" : "watch", 15 | "scale" : "2x", 16 | "screen-width" : ">145" 17 | }, 18 | { 19 | "idiom" : "watch", 20 | "scale" : "2x", 21 | "screen-width" : ">183" 22 | } 23 | ], 24 | "info" : { 25 | "version" : 1, 26 | "author" : "xcode" 27 | } 28 | } -------------------------------------------------------------------------------- /Integration/watchOSSwiftIntegration Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "watch", 5 | "scale" : "2x", 6 | "screen-width" : "<=145" 7 | }, 8 | { 9 | "idiom" : "watch", 10 | "scale" : "2x", 11 | "screen-width" : ">161" 12 | }, 13 | { 14 | "idiom" : "watch", 15 | "scale" : "2x", 16 | "screen-width" : ">145" 17 | }, 18 | { 19 | "idiom" : "watch", 20 | "scale" : "2x", 21 | "screen-width" : ">183" 22 | } 23 | ], 24 | "info" : { 25 | "version" : 1, 26 | "author" : "xcode" 27 | } 28 | } -------------------------------------------------------------------------------- /Integration/watchOSSwiftIntegration Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "watch", 5 | "scale" : "2x", 6 | "screen-width" : "<=145" 7 | }, 8 | { 9 | "idiom" : "watch", 10 | "scale" : "2x", 11 | "screen-width" : ">161" 12 | }, 13 | { 14 | "idiom" : "watch", 15 | "scale" : "2x", 16 | "screen-width" : ">145" 17 | }, 18 | { 19 | "idiom" : "watch", 20 | "scale" : "2x", 21 | "screen-width" : ">183" 22 | } 23 | ], 24 | "info" : { 25 | "version" : 1, 26 | "author" : "xcode" 27 | } 28 | } -------------------------------------------------------------------------------- /Integration/watchOSSwiftIntegration Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "watch", 5 | "scale" : "2x", 6 | "screen-width" : "<=145" 7 | }, 8 | { 9 | "idiom" : "watch", 10 | "scale" : "2x", 11 | "screen-width" : ">161" 12 | }, 13 | { 14 | "idiom" : "watch", 15 | "scale" : "2x", 16 | "screen-width" : ">145" 17 | }, 18 | { 19 | "idiom" : "watch", 20 | "scale" : "2x", 21 | "screen-width" : ">183" 22 | } 23 | ], 24 | "info" : { 25 | "version" : 1, 26 | "author" : "xcode" 27 | } 28 | } -------------------------------------------------------------------------------- /Demos/WebServerIPhone/Classes/WebSocketLogger.h: -------------------------------------------------------------------------------- 1 | // 2 | // WebSocketLogger.h 3 | // WebServerIPhone 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | #import 10 | #import "WebSocket.h" 11 | 12 | #define WebSocketLoggerDidDieNotification @"WebSocketLoggerDidDie" 13 | 14 | @interface WebSocketLogger : DDAbstractLogger 15 | { 16 | WebSocket *websocket; 17 | BOOL isWebSocketOpen; 18 | } 19 | 20 | - (id)initWithWebSocket:(WebSocket *)ws; 21 | 22 | @end 23 | 24 | @interface WebSocketFormatter : NSObject 25 | { 26 | NSDateFormatter *dateFormatter; 27 | } 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /Integration/watchOSSwiftIntegration Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "watch", 5 | "scale" : "2x", 6 | "screen-width" : "<=145" 7 | }, 8 | { 9 | "idiom" : "watch", 10 | "scale" : "2x", 11 | "screen-width" : ">161" 12 | }, 13 | { 14 | "idiom" : "watch", 15 | "scale" : "2x", 16 | "screen-width" : ">145" 17 | }, 18 | { 19 | "idiom" : "watch", 20 | "scale" : "2x", 21 | "screen-width" : ">183" 22 | } 23 | ], 24 | "info" : { 25 | "version" : 1, 26 | "author" : "xcode" 27 | } 28 | } -------------------------------------------------------------------------------- /Integration/watchOSSwiftIntegration Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "watch", 5 | "scale" : "2x", 6 | "screen-width" : "<=145" 7 | }, 8 | { 9 | "idiom" : "watch", 10 | "scale" : "2x", 11 | "screen-width" : ">161" 12 | }, 13 | { 14 | "idiom" : "watch", 15 | "scale" : "2x", 16 | "screen-width" : ">145" 17 | }, 18 | { 19 | "idiom" : "watch", 20 | "scale" : "2x", 21 | "screen-width" : ">183" 22 | } 23 | ], 24 | "info" : { 25 | "version" : 1, 26 | "author" : "xcode" 27 | } 28 | } -------------------------------------------------------------------------------- /Integration/watchOSSwiftIntegration Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "watch", 5 | "scale" : "2x", 6 | "screen-width" : "<=145" 7 | }, 8 | { 9 | "idiom" : "watch", 10 | "scale" : "2x", 11 | "screen-width" : ">161" 12 | }, 13 | { 14 | "idiom" : "watch", 15 | "scale" : "2x", 16 | "screen-width" : ">145" 17 | }, 18 | { 19 | "idiom" : "watch", 20 | "scale" : "2x", 21 | "screen-width" : ">183" 22 | } 23 | ], 24 | "info" : { 25 | "version" : 1, 26 | "author" : "xcode" 27 | } 28 | } -------------------------------------------------------------------------------- /Integration/watchOSSwiftIntegration Extension/Assets.xcassets/Complication.complicationset/Graphic Large Rectangular.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "watch", 5 | "scale" : "2x", 6 | "screen-width" : "<=145" 7 | }, 8 | { 9 | "idiom" : "watch", 10 | "scale" : "2x", 11 | "screen-width" : ">161" 12 | }, 13 | { 14 | "idiom" : "watch", 15 | "scale" : "2x", 16 | "screen-width" : ">145" 17 | }, 18 | { 19 | "idiom" : "watch", 20 | "scale" : "2x", 21 | "screen-width" : ">183" 22 | } 23 | ], 24 | "info" : { 25 | "version" : 1, 26 | "author" : "xcode" 27 | } 28 | } -------------------------------------------------------------------------------- /Demos/ContextFilter/MyContextFilter.m: -------------------------------------------------------------------------------- 1 | // 2 | // MyContextFilter.m 3 | // ContextFilter 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import "MyContextFilter.h" 9 | #import "ThirdPartyFramework.h" 10 | 11 | @implementation MyContextFilter 12 | 13 | - (NSString *)formatLogMessage:(DDLogMessage *)logMessage 14 | { 15 | if (logMessage->_context == TP_LOG_CONTEXT) 16 | { 17 | // We can filter this message by simply returning nil 18 | return nil; 19 | } 20 | else 21 | { 22 | // We could format this message if we wanted to here. 23 | // But this example is just about filtering. 24 | return logMessage->_message; 25 | } 26 | } 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Demos/WebServerIPhone/Vendor/CocoaHTTPServer/Responses/HTTPErrorResponse.m: -------------------------------------------------------------------------------- 1 | #import "HTTPErrorResponse.h" 2 | 3 | @implementation HTTPErrorResponse 4 | 5 | -(id)initWithErrorCode:(int)httpErrorCode 6 | { 7 | if ((self = [super init])) 8 | { 9 | _status = httpErrorCode; 10 | } 11 | 12 | return self; 13 | } 14 | 15 | - (UInt64) contentLength { 16 | return 0; 17 | } 18 | 19 | - (UInt64) offset { 20 | return 0; 21 | } 22 | 23 | - (void)setOffset:(UInt64)offset { 24 | ; 25 | } 26 | 27 | - (NSData*) readDataOfLength:(NSUInteger)length { 28 | return nil; 29 | } 30 | 31 | - (BOOL) isDone { 32 | return YES; 33 | } 34 | 35 | - (NSInteger) status { 36 | return _status; 37 | } 38 | @end 39 | -------------------------------------------------------------------------------- /Demos/NonArcTest/NonArcTest/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // NonArcTest 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import "AppDelegate.h" 9 | #import 10 | 11 | // Log levels: off, error, warn, info, verbose 12 | static const DDLogLevel ddLogLevel = DDLogLevelVerbose; 13 | 14 | @implementation AppDelegate 15 | 16 | @synthesize window = _window; 17 | 18 | - (void)dealloc 19 | { 20 | [super dealloc]; 21 | } 22 | 23 | - (void)applicationDidFinishLaunching:(NSNotification *)aNotification 24 | { 25 | [DDLog addLogger:[DDOSLogger sharedInstance]]; 26 | [DDLog addLogger:(id)[DDTTYLogger sharedInstance]]; 27 | 28 | DDLogVerbose(@"Testing"); 29 | } 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Demos/RegisteredDynamicLogging/Mobile/RegisteredLoggingTest/Lions.m: -------------------------------------------------------------------------------- 1 | // 2 | // Lions.m 3 | // RegisteredLoggingTest 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import "Lions.h" 9 | #import 10 | 11 | // Log levels: off, error, warn, info, verbose 12 | static DDLogLevel ddLogLevel = DDLogLevelWarning; 13 | 14 | @implementation Lions 15 | 16 | + (NSUInteger)ddLogLevel 17 | { 18 | return ddLogLevel; 19 | } 20 | 21 | + (void)ddSetLogLevel:(int)logLevel 22 | { 23 | ddLogLevel = logLevel; 24 | } 25 | 26 | + (void)logStuff 27 | { 28 | DDLogError(@"%@ - Error", THIS_FILE); 29 | DDLogWarn(@"%@ - Warn", THIS_FILE); 30 | DDLogInfo(@"%@ - Info", THIS_FILE); 31 | DDLogVerbose(@"%@ - Verbose", THIS_FILE); 32 | } 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /Demos/RegisteredDynamicLogging/Mobile/RegisteredLoggingTest/Tigers.m: -------------------------------------------------------------------------------- 1 | // 2 | // Tigers.m 3 | // RegisteredLoggingTest 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import "Tigers.h" 9 | #import 10 | 11 | // Log levels: off, error, warn, info, verbose 12 | static DDLogLevel ddLogLevel = DDLogLevelWarning; 13 | 14 | @implementation Tigers 15 | 16 | + (NSUInteger)ddLogLevel 17 | { 18 | return ddLogLevel; 19 | } 20 | 21 | + (void)ddSetLogLevel:(int)logLevel 22 | { 23 | ddLogLevel = logLevel; 24 | } 25 | 26 | + (void)logStuff 27 | { 28 | DDLogError(@"%@ - Error", THIS_FILE); 29 | DDLogWarn(@"%@ - Warn", THIS_FILE); 30 | DDLogInfo(@"%@ - Info", THIS_FILE); 31 | DDLogVerbose(@"%@ - Verbose", THIS_FILE); 32 | } 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /Tests/Tests.xcodeproj/xcshareddata/xcbaselines/432B533F1AAE425D00843E69.xcbaseline/AB613018-19D0-4E38-845A-D0F077AAF499.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | classNames 6 | 7 | DDFileLoggerPerformanceTests 8 | 9 | testPerformanceNotPrinted 10 | 11 | com.apple.XCTPerformanceMetric_WallClockTime 12 | 13 | baselineAverage 14 | 3.3116e-06 15 | baselineIntegrationDisplayName 16 | Local Baseline 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Demos/RegisteredDynamicLogging/Desktop/RegisteredLoggingTest/Lions.m: -------------------------------------------------------------------------------- 1 | // 2 | // Lions.m 3 | // RegisteredLoggingTest 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import "Lions.h" 9 | #import 10 | 11 | // Log levels: off, error, warn, info, verbose 12 | static DDLogLevel ddLogLevel = DDLogLevelWarning; 13 | 14 | @implementation Lions 15 | 16 | + (DDLogLevel)ddLogLevel 17 | { 18 | return ddLogLevel; 19 | } 20 | 21 | + (void)ddSetLogLevel:(DDLogLevel)logLevel 22 | { 23 | ddLogLevel = logLevel; 24 | } 25 | 26 | + (void)logStuff 27 | { 28 | DDLogError(@"%@ - Error", THIS_FILE); 29 | DDLogWarn(@"%@ - Warn", THIS_FILE); 30 | DDLogInfo(@"%@ - Info", THIS_FILE); 31 | DDLogVerbose(@"%@ - Verbose", THIS_FILE); 32 | } 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /Demos/RegisteredDynamicLogging/Desktop/RegisteredLoggingTest/Tigers.m: -------------------------------------------------------------------------------- 1 | // 2 | // Tigers.m 3 | // RegisteredLoggingTest 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import "Tigers.h" 9 | #import 10 | 11 | // Log levels: off, error, warn, info, verbose 12 | static DDLogLevel ddLogLevel = DDLogLevelWarning; 13 | 14 | @implementation Tigers 15 | 16 | + (DDLogLevel)ddLogLevel 17 | { 18 | return ddLogLevel; 19 | } 20 | 21 | + (void)ddSetLogLevel:(DDLogLevel)logLevel 22 | { 23 | ddLogLevel = logLevel; 24 | } 25 | 26 | + (void)logStuff 27 | { 28 | DDLogError(@"%@ - Error", THIS_FILE); 29 | DDLogWarn(@"%@ - Warn", THIS_FILE); 30 | DDLogInfo(@"%@ - Info", THIS_FILE); 31 | DDLogVerbose(@"%@ - Verbose", THIS_FILE); 32 | } 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /Demos/WebServerIPhone/Classes/WebServerIPhoneAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // WebServerIPhoneAppDelegate.h 3 | // WebServerIPhone 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | @class WebServerIPhoneViewController; 11 | @class DDFileLogger; 12 | @class HTTPServer; 13 | 14 | @interface WebServerIPhoneAppDelegate : NSObject 15 | { 16 | DDFileLogger *fileLogger; 17 | 18 | HTTPServer *httpServer; 19 | 20 | UIWindow *window; 21 | WebServerIPhoneViewController *viewController; 22 | } 23 | 24 | @property (nonatomic, readonly) DDFileLogger *fileLogger; 25 | 26 | @property (nonatomic, strong) IBOutlet UIWindow *window; 27 | @property (nonatomic, strong) IBOutlet WebServerIPhoneViewController *viewController; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /Demos/FineGrainedLogging/FineGrainedLoggingAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // FineGrainedLoggingAppDelegate.m 3 | // FineGrainedLogging 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import "FineGrainedLoggingAppDelegate.h" 9 | 10 | #import "MYLog.h" 11 | 12 | #import "TimerOne.h" 13 | #import "TimerTwo.h" 14 | 15 | @implementation FineGrainedLoggingAppDelegate 16 | 17 | @synthesize window; 18 | 19 | - (void)applicationDidFinishLaunching:(NSNotification *)aNotification 20 | { 21 | [DDLog addLogger:[DDOSLogger sharedInstance] withLevel:DDLogLevelVerbose | LOG_FLAG_TIMERS]; 22 | [DDLog addLogger:(id)[DDTTYLogger sharedInstance] withLevel:DDLogLevelVerbose | LOG_FLAG_TIMERS]; 23 | 24 | timerOne = [[TimerOne alloc] init]; 25 | timerTwo = [[TimerTwo alloc] init]; 26 | } 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Integration/Sources/ViewController.h: -------------------------------------------------------------------------------- 1 | // Software License Agreement (BSD License) 2 | // 3 | // Copyright (c) 2010-2025, Deusty, LLC 4 | // All rights reserved. 5 | // 6 | // Redistribution and use of this software in source and binary forms, 7 | // with or without modification, are permitted provided that the following conditions are met: 8 | // 9 | // * Redistributions of source code must retain the above copyright notice, 10 | // this list of conditions and the following disclaimer. 11 | // 12 | // * Neither the name of Deusty nor the names of its contributors may be used 13 | // to endorse or promote products derived from this software without specific 14 | // prior written permission of Deusty, LLC. 15 | 16 | #import 17 | 18 | @interface ViewController : UIViewController 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Benchmarking/PerformanceTesting.h: -------------------------------------------------------------------------------- 1 | // 2 | // PerformanceTesting.h 3 | // Benchmarking 4 | // 5 | // CocoaLumberjack Benchmarking 6 | // 7 | 8 | #import 9 | 10 | #define SPEED_TEST_0_COUNT 1000 // Total log statements 11 | #define SPEED_TEST_1_COUNT 1000 // Total log statements 12 | #define SPEED_TEST_2_COUNT 1000 // Total log statements 13 | #define SPEED_TEST_3_COUNT 250 // Per log level (multiply by 4 to get total) 14 | 15 | #define SPEED_TEST_4_VERBOSE_COUNT 900 16 | #define SPEED_TEST_4_INFO_COUNT 000 17 | #define SPEED_TEST_4_WARN_COUNT 000 18 | #define SPEED_TEST_4_ERROR_COUNT 100 19 | 20 | // Further documentation on these tests may be found in the implementation file. 21 | 22 | @interface PerformanceTesting : NSObject 23 | 24 | + (void)startPerformanceTests; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Tests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /Demos/FineGrainedLogging/MYLog.h: -------------------------------------------------------------------------------- 1 | // 2 | // MYLog.h 3 | // FineGrainedLogging 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | 10 | // The first 4 bits are being used by the standard levels (0 - 3) 11 | // All other bits are fair game for us to use. 12 | 13 | #define LOG_FLAG_FOOD_TIMER (1 << 5) // 0...0100000 14 | #define LOG_FLAG_SLEEP_TIMER (1 << 6) // 0...1000000 15 | 16 | #define DDLogFoodTimer(frmt, ...) LOG_MAYBE(YES, ddLogLevel, LOG_FLAG_FOOD_TIMER, 0, nil, __PRETTY_FUNCTION__, frmt, ##__VA_ARGS__) 17 | #define DDLogSleepTimer(frmt, ...) LOG_MAYBE(YES, ddLogLevel, LOG_FLAG_SLEEP_TIMER, 0, nil, __PRETTY_FUNCTION__, frmt, ##__VA_ARGS__) 18 | 19 | // Now we decide which flags we want to enable in our application 20 | 21 | #define LOG_FLAG_TIMERS (LOG_FLAG_FOOD_TIMER | LOG_FLAG_SLEEP_TIMER) 22 | -------------------------------------------------------------------------------- /Integration/watchOSSwiftIntegration Extension/InterfaceController.swift: -------------------------------------------------------------------------------- 1 | // Software License Agreement (BSD License) 2 | // 3 | // Copyright (c) 2010-2025, Deusty, LLC 4 | // All rights reserved. 5 | // 6 | // Redistribution and use of this software in source and binary forms, 7 | // with or without modification, are permitted provided that the following conditions are met: 8 | // 9 | // * Redistributions of source code must retain the above copyright notice, 10 | // this list of conditions and the following disclaimer. 11 | // 12 | // * Neither the name of Deusty nor the names of its contributors may be used 13 | // to endorse or promote products derived from this software without specific 14 | // prior written permission of Deusty, LLC. 15 | 16 | import WatchKit 17 | import Foundation 18 | 19 | final class InterfaceController: WKInterfaceController {} 20 | -------------------------------------------------------------------------------- /Integration/Sources/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // Software License Agreement (BSD License) 2 | // 3 | // Copyright (c) 2010-2025, Deusty, LLC 4 | // All rights reserved. 5 | // 6 | // Redistribution and use of this software in source and binary forms, 7 | // with or without modification, are permitted provided that the following conditions are met: 8 | // 9 | // * Redistributions of source code must retain the above copyright notice, 10 | // this list of conditions and the following disclaimer. 11 | // 12 | // * Neither the name of Deusty nor the names of its contributors may be used 13 | // to endorse or promote products derived from this software without specific 14 | // prior written permission of Deusty, LLC. 15 | 16 | #import 17 | 18 | @interface AppDelegate : UIResponder 19 | 20 | @property (strong, nonatomic) UIWindow *window; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Integration/watchOSSwiftIntegration Extension/NotificationController.swift: -------------------------------------------------------------------------------- 1 | // Software License Agreement (BSD License) 2 | // 3 | // Copyright (c) 2010-2025, Deusty, LLC 4 | // All rights reserved. 5 | // 6 | // Redistribution and use of this software in source and binary forms, 7 | // with or without modification, are permitted provided that the following conditions are met: 8 | // 9 | // * Redistributions of source code must retain the above copyright notice, 10 | // this list of conditions and the following disclaimer. 11 | // 12 | // * Neither the name of Deusty nor the names of its contributors may be used 13 | // to endorse or promote products derived from this software without specific 14 | // prior written permission of Deusty, LLC. 15 | 16 | import WatchKit 17 | import Foundation 18 | import UserNotifications 19 | 20 | final class NotificationController: WKUserNotificationInterfaceController {} 21 | -------------------------------------------------------------------------------- /Xcode/Lumberjack/CocoaLumberjack-Prefix.pch: -------------------------------------------------------------------------------- 1 | // Software License Agreement (BSD License) 2 | // 3 | // Copyright (c) 2010-2025, Deusty, LLC 4 | // All rights reserved. 5 | // 6 | // Redistribution and use of this software in source and binary forms, 7 | // with or without modification, are permitted provided that the following conditions are met: 8 | // 9 | // * Redistributions of source code must retain the above copyright notice, 10 | // this list of conditions and the following disclaimer. 11 | // 12 | // * Neither the name of Deusty nor the names of its contributors may be used 13 | // to endorse or promote products derived from this software without specific 14 | // prior written permission of Deusty, LLC. 15 | 16 | // 17 | // Prefix header for all source files of the 'Lumberjack' target in the 'Lumberjack' project 18 | // 19 | 20 | #ifdef __OBJC__ 21 | #import 22 | #endif 23 | -------------------------------------------------------------------------------- /Demos/WebServerIPhone/Vendor/CocoaHTTPServer/Mime/MultipartMessageHeaderField.h: -------------------------------------------------------------------------------- 1 | 2 | #import 3 | 4 | //----------------------------------------------------------------- 5 | // interface MultipartMessageHeaderField 6 | //----------------------------------------------------------------- 7 | 8 | @interface MultipartMessageHeaderField : NSObject { 9 | NSString* name; 10 | NSString* value; 11 | NSMutableDictionary* params; 12 | } 13 | 14 | @property (strong, readonly) NSString* value; 15 | @property (strong, readonly) NSDictionary* params; 16 | @property (strong, readonly) NSString* name; 17 | 18 | //- (id) initWithLine:(NSString*) line; 19 | //- (id) initWithName:(NSString*) paramName value:(NSString*) paramValue; 20 | 21 | - (id) initWithData:(NSData*) data contentEncoding:(NSStringEncoding) encoding; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Demos/PerUserLogLevels/Scripts/LumberjackUser.bash: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Get full user name of current user 4 | # E.g. "Robbie Hanson" 5 | full1=$(osascript -e "tell application \"System Events\"" -e "get the full name of the current user" -e "end tell") 6 | #echo $full1 7 | 8 | # Convert to lower case 9 | # E.g. "robbie hanson" 10 | full2=$(echo $full1 | awk '{print tolower($0)}') 11 | #echo $full2 12 | 13 | # Replace spaces with underscores 14 | # E.g. "robbie_hanson" 15 | full3=$(echo ${full2// /_}) 16 | #echo $full3 17 | 18 | # Remove any characters that are illegal in a macro name 19 | full4=$(echo $full3 | sed 's/[^0-9a-zA-Z_]*//g') 20 | #echo $full4 21 | 22 | # If blank, set the name to an anonymous user 23 | if [ "$full4" == "" ] 24 | then 25 | full4='anonymous_user' 26 | fi 27 | 28 | echo "// This file is automatically generated" > ${SCRIPT_OUTPUT_FILE_0} 29 | echo "#define $full4 1" >> ${SCRIPT_OUTPUT_FILE_0} 30 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ### New Pull Request Checklist 2 | 3 | - [ ] I have read and understood the [CONTRIBUTING guide](https://github.com/CocoaLumberjack/CocoaLumberjack/blob/master/.github/CONTRIBUTING.md) 4 | - [ ] I have read the [Documentation](http://cocoadocs.org/docsets/CocoaLumberjack/) 5 | - [ ] I have searched for a similar pull request in the [project](https://github.com/CocoaLumberjack/CocoaLumberjack/pulls) and found none 6 | 7 |
8 | 9 | - [ ] I have updated this branch with the latest master to avoid conflicts (via rebase of master) 10 | - [ ] I have added the required tests to prove the fix/feature I am adding 11 | - [ ] I have updated the documentation (if necessary) 12 | - [ ] I have run the tests and they pass 13 | - [ ] I have run the lint and it passes (`pod lib lint`) 14 | 15 | This merge request fixes / refers to the following issues: ... 16 | 17 | ### Pull Request Description 18 | 19 | ... 20 | -------------------------------------------------------------------------------- /Integration/Sources/main.m: -------------------------------------------------------------------------------- 1 | // Software License Agreement (BSD License) 2 | // 3 | // Copyright (c) 2010-2025, Deusty, LLC 4 | // All rights reserved. 5 | // 6 | // Redistribution and use of this software in source and binary forms, 7 | // with or without modification, are permitted provided that the following conditions are met: 8 | // 9 | // * Redistributions of source code must retain the above copyright notice, 10 | // this list of conditions and the following disclaimer. 11 | // 12 | // * Neither the name of Deusty nor the names of its contributors may be used 13 | // to endorse or promote products derived from this software without specific 14 | // prior written permission of Deusty, LLC. 15 | 16 | #import 17 | #import "AppDelegate.h" 18 | 19 | int main(int argc, char * argv[]) { 20 | @autoreleasepool { 21 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /.github/workflows/cocoapods-validations.yml: -------------------------------------------------------------------------------- 1 | name: CocoaPods Validation 2 | 3 | on: 4 | push: 5 | branches: [master] 6 | pull_request: 7 | branches: [master] 8 | 9 | env: 10 | LC_CTYPE: en_US.UTF-8 11 | LANG: en_US.UTF-8 12 | 13 | jobs: 14 | validate-cocoapods: 15 | runs-on: macos-15 16 | steps: 17 | - uses: maxim-lobanov/setup-xcode@v1 18 | with: 19 | xcode-version: ^16.4 20 | - name: Install Platforms 21 | run: | 22 | xcrun simctl delete unavailable # Remove unavailable sims - also boots the simulator 23 | xcodebuild -downloadPlatform iOS 24 | xcodebuild -downloadPlatform tvOS 25 | xcodebuild -downloadPlatform visionOS 26 | xcodebuild -downloadPlatform watchOS 27 | - uses: actions/checkout@v5 28 | - name: Generate Podspec 29 | run: ./Scripts/generate-podspec.sh 30 | - name: Validate Pod 31 | run: pod lib lint 32 | -------------------------------------------------------------------------------- /Sources/CocoaLumberjack/PrivacyInfo.xcprivacy: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSPrivacyTracking 6 | 7 | NSPrivacyCollectedDataTypes 8 | 9 | NSPrivacyAccessedAPITypes 10 | 11 | 12 | NSPrivacyAccessedAPIType 13 | NSPrivacyAccessedAPICategoryFileTimestamp 14 | NSPrivacyAccessedAPITypeReasons 15 | 16 | C617.1 17 | 0A2A.1 18 | 19 | 20 | 21 | NSPrivacyAccessedAPIType 22 | NSPrivacyAccessedAPICategoryDiskSpace 23 | NSPrivacyAccessedAPITypeReasons 24 | 25 | E174.1 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /Demos/CaptureASL/CaptureASL/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // CaptureASL 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import "AppDelegate.h" 9 | #import 10 | 11 | @interface SimpleFormatter : NSObject 12 | 13 | @end 14 | 15 | @implementation SimpleFormatter 16 | 17 | - (NSString *)formatLogMessage:(DDLogMessage *)logMessage 18 | { 19 | return [NSString stringWithFormat:@" Captured: %@", logMessage->_message]; 20 | } 21 | 22 | @end 23 | 24 | 25 | @implementation AppDelegate 26 | 27 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 28 | { 29 | DDTTYLogger.sharedInstance.logFormatter = [SimpleFormatter new]; 30 | [DDLog addLogger:DDTTYLogger.sharedInstance]; 31 | [DDLog addLogger:DDASLLogger.sharedInstance]; 32 | 33 | [DDASLLogCapture start]; 34 | 35 | return YES; 36 | } 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /Documentation/PerLoggerLogLevels.md: -------------------------------------------------------------------------------- 1 | ### Use Log Level per Logger 2 | 3 | If you need a different log level for every logger (i.e. if you have a custom logger like Crashlytics logger that should not log Info or Debug info), you can easily achieve this using the `DDLog.add(_, with:)` method in Swift, or `[DDLog addLogger:withLevel:]` method in Objective C. 4 | 5 | #### Swift 6 | ```swift 7 | DDLog.add(DDOSLogger.sharedInstance, with: DDLogLevel.info) 8 | DDLog.add(DDFileLogger.sharedInstance, with: DDLogLevel.debug) 9 | ``` 10 | 11 | #### Objective C 12 | ```objc 13 | [DDLog addLogger:[DDOSLogger sharedInstance] withLevel:DDLogLevelInfo]; 14 | [DDLog addLogger:[DDFileLogger sharedInstance] withLevel:DDLogLevelDebug]; 15 | ``` 16 | 17 | 18 | You can still use the old method `+addLogger:`, this one uses the `DDLogLevelVerbose` as default, so no log is excluded. 19 | 20 | You can retrieve the list of every logger and level associated to DDLog via the `[DDLog allLoggersWithLevel]` method. 21 | -------------------------------------------------------------------------------- /Lumberjack.xcodeproj/xcshareddata/IDETemplateMacros.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FILEHEADER 6 | Software License Agreement (BSD License) 7 | // 8 | // Copyright (c) 2010-___YEAR___, Deusty, LLC 9 | // All rights reserved. 10 | // 11 | // Redistribution and use of this software in source and binary forms, 12 | // with or without modification, are permitted provided that the following conditions are met: 13 | // 14 | // * Redistributions of source code must retain the above copyright notice, 15 | // this list of conditions and the following disclaimer. 16 | // 17 | // * Neither the name of Deusty nor the names of its contributors may be used 18 | // to endorse or promote products derived from this software without specific 19 | // prior written permission of Deusty, LLC. 20 | 21 | 22 | -------------------------------------------------------------------------------- /Tests/Tests.xcodeproj/xcshareddata/IDETemplateMacros.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FILEHEADER 6 | Software License Agreement (BSD License) 7 | // 8 | // Copyright (c) 2010-___YEAR___, Deusty, LLC 9 | // All rights reserved. 10 | // 11 | // Redistribution and use of this software in source and binary forms, 12 | // with or without modification, are permitted provided that the following conditions are met: 13 | // 14 | // * Redistributions of source code must retain the above copyright notice, 15 | // this list of conditions and the following disclaimer. 16 | // 17 | // * Neither the name of Deusty nor the names of its contributors may be used 18 | // to endorse or promote products derived from this software without specific 19 | // prior written permission of Deusty, LLC. 20 | 21 | 22 | -------------------------------------------------------------------------------- /Sources/CocoaLumberjack/include/CocoaLumberjack/DDFileLogger+Buffering.h: -------------------------------------------------------------------------------- 1 | // Software License Agreement (BSD License) 2 | // 3 | // Copyright (c) 2010-2025, Deusty, LLC 4 | // All rights reserved. 5 | // 6 | // Redistribution and use of this software in source and binary forms, 7 | // with or without modification, are permitted provided that the following conditions are met: 8 | // 9 | // * Redistributions of source code must retain the above copyright notice, 10 | // this list of conditions and the following disclaimer. 11 | // 12 | // * Neither the name of Deusty nor the names of its contributors may be used 13 | // to endorse or promote products derived from this software without specific 14 | // prior written permission of Deusty, LLC. 15 | 16 | #import 17 | 18 | NS_ASSUME_NONNULL_BEGIN 19 | 20 | @interface DDFileLogger (Buffering) 21 | 22 | - (instancetype)wrapWithBuffer; 23 | - (instancetype)unwrapFromBuffer; 24 | 25 | @end 26 | 27 | NS_ASSUME_NONNULL_END 28 | -------------------------------------------------------------------------------- /Integration/Integration.xcodeproj/xcshareddata/IDETemplateMacros.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FILEHEADER 6 | Software License Agreement (BSD License) 7 | // 8 | // Copyright (c) 2010-___YEAR___, Deusty, LLC 9 | // All rights reserved. 10 | // 11 | // Redistribution and use of this software in source and binary forms, 12 | // with or without modification, are permitted provided that the following conditions are met: 13 | // 14 | // * Redistributions of source code must retain the above copyright notice, 15 | // this list of conditions and the following disclaimer. 16 | // 17 | // * Neither the name of Deusty nor the names of its contributors may be used 18 | // to endorse or promote products derived from this software without specific 19 | // prior written permission of Deusty, LLC. 20 | 21 | 22 | -------------------------------------------------------------------------------- /Integration/watchOSSwiftIntegration Extension/PushNotificationPayload.apns: -------------------------------------------------------------------------------- 1 | { 2 | "aps": { 3 | "alert": { 4 | "body": "Test message", 5 | "title": "Optional title", 6 | "subtitle": "Optional subtitle" 7 | }, 8 | "category": "myCategory", 9 | "thread-id":"5280" 10 | }, 11 | 12 | "WatchKit Simulator Actions": [ 13 | { 14 | "title": "First Button", 15 | "identifier": "firstButtonAction" 16 | } 17 | ], 18 | 19 | "customKey": "Use this file to define a testing payload for your notifications. The aps dictionary specifies the category, alert text and title. The WatchKit Simulator Actions array can provide info for one or more action buttons in addition to the standard Dismiss button. Any other top level keys are custom payload. If you have multiple such JSON files in your project, you'll be able to select them when choosing to debug the notification interface of your Watch App." 20 | } 21 | -------------------------------------------------------------------------------- /Demos/CLI/CLI/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // CLI 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | #import 10 | 11 | static const DDLogLevel ddLogLevel = DDLogLevelVerbose; 12 | 13 | int main(__unused int argc, __unused const char * argv[]) 14 | { 15 | @autoreleasepool { 16 | // Test 17 | DDTTYLogger * logger = [DDTTYLogger sharedInstance]; 18 | logger.colorsEnabled = YES; 19 | [logger setForegroundColor:[DDColor colorWithCalibratedRed:26.0/255.0 20 | green:158.0/255.0 21 | blue:4.0/255.0 22 | alpha:1.0] 23 | backgroundColor:nil 24 | forFlag:DDLogFlagInfo]; 25 | [DDLog addLogger:logger]; 26 | DDLogInfo(@"Hello, World!"); 27 | } 28 | return 0; 29 | } 30 | -------------------------------------------------------------------------------- /Demos/CustomLogLevels/CustomLogLevelsAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // CustomLogLevelsAppDelegate.m 3 | // CustomLogLevels 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import "CustomLogLevelsAppDelegate.h" 9 | 10 | #import "MYLog.h" 11 | 12 | // Debug levels: off, fatal, error, warn, notice, info, debug 13 | static const DDLogLevel ddLogLevel = LOG_LEVEL_DEBUG; 14 | 15 | @implementation CustomLogLevelsAppDelegate 16 | 17 | @synthesize window; 18 | 19 | - (void)applicationDidFinishLaunching:(NSNotification *)aNotification 20 | { 21 | // since the verbose log level was undefined, we need to specify the log level for every logger 22 | [DDLog addLogger:[DDOSLogger sharedInstance] withLevel:LOG_LEVEL_DEBUG]; 23 | [DDLog addLogger:(id)[DDTTYLogger sharedInstance] withLevel:LOG_LEVEL_DEBUG]; 24 | 25 | DDLogFatal(@"Fatal"); 26 | DDLogError(@"Error"); 27 | DDLogWarn(@"Warn"); 28 | DDLogNotice(@"Notice"); 29 | DDLogInfo(@"Info"); 30 | DDLogDebug(@"Debug"); 31 | } 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /Sources/CocoaLumberjack/Supporting Files/CocoaLumberjack-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | FMWK 19 | CFBundleShortVersionString 20 | $(MARKETING_VERSION) 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | NSPrincipalClass 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /Sources/CocoaLumberjackSwift/Supporting Files/CocoaLumberjackSwift-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | FMWK 19 | CFBundleShortVersionString 20 | $(MARKETING_VERSION) 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | NSPrincipalClass 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /Demos/UniversalApp/UniversalApp-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIconFile 12 | 13 | CFBundleIdentifier 14 | $(PRODUCT_BUNDLE_IDENTIFIER) 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | ${PRODUCT_NAME} 19 | CFBundlePackageType 20 | APPL 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.0 25 | LSRequiresIPhoneOS 26 | 27 | NSMainNibFile 28 | MainWindow 29 | 30 | 31 | -------------------------------------------------------------------------------- /Integration/tvOSSwiftIntegration/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UIRequiredDeviceCapabilities 24 | 25 | arm64 26 | 27 | UIUserInterfaceStyle 28 | Automatic 29 | 30 | 31 | -------------------------------------------------------------------------------- /Demos/Benchmark/Mobile/BenchmarkIPhone-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIconFile 12 | 13 | CFBundleIdentifier 14 | $(PRODUCT_BUNDLE_IDENTIFIER) 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | ${PRODUCT_NAME} 19 | CFBundlePackageType 20 | APPL 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.0 25 | LSRequiresIPhoneOS 26 | 27 | NSMainNibFile 28 | MainWindow 29 | 30 | 31 | -------------------------------------------------------------------------------- /Demos/WebServerIPhone/WebServerIPhone-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIconFile 12 | 13 | CFBundleIdentifier 14 | $(PRODUCT_BUNDLE_IDENTIFIER) 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | ${PRODUCT_NAME} 19 | CFBundlePackageType 20 | APPL 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.0 25 | LSRequiresIPhoneOS 26 | 27 | NSMainNibFile 28 | MainWindow 29 | 30 | 31 | -------------------------------------------------------------------------------- /Sources/CocoaLumberjack/DDLoggerNames.m: -------------------------------------------------------------------------------- 1 | // Software License Agreement (BSD License) 2 | // 3 | // Copyright (c) 2010-2025, Deusty, LLC 4 | // All rights reserved. 5 | // 6 | // Redistribution and use of this software in source and binary forms, 7 | // with or without modification, are permitted provided that the following conditions are met: 8 | // 9 | // * Redistributions of source code must retain the above copyright notice, 10 | // this list of conditions and the following disclaimer. 11 | // 12 | // * Neither the name of Deusty nor the names of its contributors may be used 13 | // to endorse or promote products derived from this software without specific 14 | // prior written permission of Deusty, LLC. 15 | 16 | #import 17 | 18 | DDLoggerName const DDLoggerNameASL = @"cocoa.lumberjack.aslLogger"; 19 | DDLoggerName const DDLoggerNameTTY = @"cocoa.lumberjack.ttyLogger"; 20 | DDLoggerName const DDLoggerNameOS = @"cocoa.lumberjack.osLogger"; 21 | DDLoggerName const DDLoggerNameFile = @"cocoa.lumberjack.fileLogger"; 22 | -------------------------------------------------------------------------------- /Demos/WebServerIPhone/Vendor/CocoaHTTPServer/HTTPAuthenticationRequest.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #if TARGET_OS_IPHONE 4 | // Note: You may need to add the CFNetwork Framework to your project 5 | #import 6 | #endif 7 | 8 | @class HTTPMessage; 9 | 10 | 11 | @interface HTTPAuthenticationRequest : NSObject 12 | { 13 | BOOL isBasic; 14 | BOOL isDigest; 15 | 16 | NSString *base64Credentials; 17 | 18 | NSString *username; 19 | NSString *realm; 20 | NSString *nonce; 21 | NSString *uri; 22 | NSString *qop; 23 | NSString *nc; 24 | NSString *cnonce; 25 | NSString *response; 26 | } 27 | - (id)initWithRequest:(HTTPMessage *)request; 28 | 29 | - (BOOL)isBasic; 30 | - (BOOL)isDigest; 31 | 32 | // Basic 33 | - (NSString *)base64Credentials; 34 | 35 | // Digest 36 | - (NSString *)username; 37 | - (NSString *)realm; 38 | - (NSString *)nonce; 39 | - (NSString *)uri; 40 | - (NSString *)qop; 41 | - (NSString *)nc; 42 | - (NSString *)cnonce; 43 | - (NSString *)response; 44 | 45 | @end 46 | -------------------------------------------------------------------------------- /Integration/macOSSwiftIntegration/main.swift: -------------------------------------------------------------------------------- 1 | // Software License Agreement (BSD License) 2 | // 3 | // Copyright (c) 2010-2025, Deusty, LLC 4 | // All rights reserved. 5 | // 6 | // Redistribution and use of this software in source and binary forms, 7 | // with or without modification, are permitted provided that the following conditions are met: 8 | // 9 | // * Redistributions of source code must retain the above copyright notice, 10 | // this list of conditions and the following disclaimer. 11 | // 12 | // * Neither the name of Deusty nor the names of its contributors may be used 13 | // to endorse or promote products derived from this software without specific 14 | // prior written permission of Deusty, LLC. 15 | 16 | import Foundation 17 | import CocoaLumberjackSwift 18 | 19 | if #available(macOS 10.12, iOS 10.0, watchOS 3.0, tvOS 10.0, *) { 20 | DDLog.add(DDOSLogger.sharedInstance) 21 | } else if let ttyLogger = DDTTYLogger.sharedInstance { 22 | DDLog.add(ttyLogger) 23 | } 24 | 25 | DDLogVerbose("Verbose") 26 | DDLogInfo("Info") 27 | DDLogWarn("Warn") 28 | DDLogError("Error") 29 | -------------------------------------------------------------------------------- /Sources/CocoaLumberjack/DDFileLogger+Internal.h: -------------------------------------------------------------------------------- 1 | // Software License Agreement (BSD License) 2 | // 3 | // Copyright (c) 2010-2025, Deusty, LLC 4 | // All rights reserved. 5 | // 6 | // Redistribution and use of this software in source and binary forms, 7 | // with or without modification, are permitted provided that the following conditions are met: 8 | // 9 | // * Redistributions of source code must retain the above copyright notice, 10 | // this list of conditions and the following disclaimer. 11 | // 12 | // * Neither the name of Deusty nor the names of its contributors may be used 13 | // to endorse or promote products derived from this software without specific 14 | // prior written permission of Deusty, LLC. 15 | 16 | #import 17 | 18 | NS_ASSUME_NONNULL_BEGIN 19 | 20 | @interface DDFileLogger (Internal) 21 | 22 | - (void)logData:(NSData *)data; 23 | 24 | // Will assert if used outside logger's queue. 25 | - (void)lt_logData:(NSData *)data; 26 | 27 | - (nullable NSData *)lt_dataForMessage:(DDLogMessage *)message; 28 | 29 | @end 30 | 31 | NS_ASSUME_NONNULL_END 32 | -------------------------------------------------------------------------------- /Demos/SQLiteLogger/FMDB/FMDatabaseAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // FMDatabaseAdditions.h 3 | // fmkit 4 | // 5 | // Created by August Mueller on 10/30/05. 6 | // Copyright 2005 Flying Meat Inc.. All rights reserved. 7 | // 8 | 9 | #import 10 | @interface FMDatabase (FMDatabaseAdditions) 11 | 12 | 13 | - (int)intForQuery:(NSString*)objs, ...; 14 | - (long)longForQuery:(NSString*)objs, ...; 15 | - (BOOL)boolForQuery:(NSString*)objs, ...; 16 | - (double)doubleForQuery:(NSString*)objs, ...; 17 | - (NSString*)stringForQuery:(NSString*)objs, ...; 18 | - (NSData*)dataForQuery:(NSString*)objs, ...; 19 | - (NSDate*)dateForQuery:(NSString*)objs, ...; 20 | 21 | // Notice that there's no dataNoCopyForQuery:. 22 | // That would be a bad idea, because we close out the result set, and then what 23 | // happens to the data that we just didn't copy? Who knows, not I. 24 | 25 | 26 | - (BOOL)tableExists:(NSString*)tableName; 27 | - (FMResultSet*)getSchema; 28 | - (FMResultSet*)getTableSchema:(NSString*)tableName; 29 | - (BOOL)columnExists:(NSString*)tableName columnName:(NSString*)columnName; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Benchmarking/Results/Benchmark iMac.csv: -------------------------------------------------------------------------------- 1 | 0, 0.6169, 0.6700, 0.7403 2 | 1, 0.0000, 0.0000, 0.0000 3 | 2, 0.0000, 0.0000, 0.0000 4 | 3, 0.0000, 0.0000, 0.0000 5 | 4, 0.0000, 0.0000, 0.0000 6 | 5, 0.0000, 0.0000, 0.0000 7 | 6, 0.0000, 0.0000, 0.0000 8 | 10, 0.6106, 0.6640, 0.7329 9 | 11, 0.0184, 0.0268, 0.0466 10 | 12, 0.0185, 0.0243, 0.0477 11 | 13, 0.0183, 0.0213, 0.0234 12 | 14, 0.0213, 0.0223, 0.0246 13 | 15, 0.0182, 0.0231, 0.0426 14 | 16, 0.0182, 0.0207, 0.0286 15 | 20, 0.6167, 0.6651, 0.7365 16 | 21, 0.2614, 0.3090, 0.3966 17 | 22, 0.2672, 0.3121, 0.3805 18 | 23, 0.0541, 0.0675, 0.0834 19 | 24, 0.0541, 0.0576, 0.0824 20 | 25, 0.2795, 0.3334, 0.4408 21 | 26, 0.2847, 0.3438, 0.4951 22 | 30, 0.6077, 0.6560, 0.7029 23 | 31, 0.0676, 0.0997, 0.2275 24 | 32, 0.0723, 0.0945, 0.1568 25 | 33, 0.0188, 0.0191, 0.0203 26 | 34, 0.0187, 0.0192, 0.0233 27 | 35, 0.0723, 0.0886, 0.1579 28 | 36, 0.0774, 0.0934, 0.1095 29 | 40, 0.6101, 0.6597, 0.7372 30 | 41, 0.0189, 0.0308, 0.0484 31 | 42, 0.0237, 0.0322, 0.0468 32 | 43, 0.0053, 0.0054, 0.0056 33 | 44, 0.0053, 0.0055, 0.0057 34 | 45, 0.0233, 0.0347, 0.0780 35 | 46, 0.0223, 0.0316, 0.0559 36 | -------------------------------------------------------------------------------- /Benchmarking/Results/Benchmark iPad.csv: -------------------------------------------------------------------------------- 1 | 0, 2.4968, 2.5606, 2.7525 2 | 1, 0.0001, 0.0001, 0.0001 3 | 2, 0.0000, 0.0000, 0.0000 4 | 3, 0.0000, 0.0000, 0.0000 5 | 4, 0.0000, 0.0014, 0.0285 6 | 5, 0.0000, 0.0000, 0.0001 7 | 6, 0.0000, 0.0000, 0.0000 8 | 10, 2.5016, 2.5982, 2.7952 9 | 11, 0.2299, 0.5288, 1.2570 10 | 12, 0.2845, 0.5943, 0.8713 11 | 13, 0.3455, 0.3955, 0.5355 12 | 14, 0.2955, 0.3814, 0.4431 13 | 15, 0.2304, 0.5469, 0.9735 14 | 16, 0.2761, 0.4723, 0.7460 15 | 20, 2.5067, 2.5589, 2.6211 16 | 21, 1.5797, 1.8261, 2.1204 17 | 22, 1.8572, 1.9808, 2.1686 18 | 23, 0.4198, 0.4877, 0.5202 19 | 24, 0.4220, 0.4873, 0.5729 20 | 25, 2.0504, 2.2492, 2.4038 21 | 26, 2.1307, 2.3070, 2.4938 22 | 30, 2.5003, 2.5565, 2.6215 23 | 31, 0.5118, 0.6478, 0.8476 24 | 32, 0.5157, 0.6690, 0.8628 25 | 33, 0.1525, 0.2119, 0.2614 26 | 34, 0.1407, 0.2039, 0.2715 27 | 35, 0.5535, 0.6758, 0.8734 28 | 36, 0.5397, 0.6877, 0.8979 29 | 40, 2.4872, 2.5404, 2.5948 30 | 41, 0.1454, 0.2044, 0.3307 31 | 42, 0.1604, 0.2122, 0.2885 32 | 43, 0.0287, 0.0484, 0.0962 33 | 44, 0.0286, 0.0480, 0.1025 34 | 45, 0.1542, 0.2173, 0.3335 35 | 46, 0.1521, 0.2266, 0.3015 36 | -------------------------------------------------------------------------------- /Benchmarking/Results/Benchmark PowerMac.csv: -------------------------------------------------------------------------------- 1 | 0, 0.2724, 0.2816, 0.3198 2 | 1, 0.0000, 0.0000, 0.0000 3 | 2, 0.0000, 0.0000, 0.0000 4 | 3, 0.0000, 0.0000, 0.0000 5 | 4, 0.0000, 0.0000, 0.0000 6 | 5, 0.0000, 0.0000, 0.0000 7 | 6, 0.0000, 0.0000, 0.0000 8 | 10, 0.2710, 0.2757, 0.2826 9 | 11, 0.0032, 0.0035, 0.0043 10 | 12, 0.0032, 0.0036, 0.0066 11 | 13, 0.0032, 0.0032, 0.0033 12 | 14, 0.0032, 0.0032, 0.0033 13 | 15, 0.0032, 0.0035, 0.0054 14 | 16, 0.0032, 0.0037, 0.0065 15 | 20, 0.2715, 0.2804, 0.3601 16 | 21, 0.0996, 0.1037, 0.1090 17 | 22, 0.0984, 0.1042, 0.1265 18 | 23, 0.0296, 0.0311, 0.0370 19 | 24, 0.0294, 0.0301, 0.0314 20 | 25, 0.1118, 0.1523, 0.8192 21 | 26, 0.1089, 0.1138, 0.1204 22 | 30, 0.2720, 0.2760, 0.2842 23 | 31, 0.0251, 0.0269, 0.0287 24 | 32, 0.0260, 0.0273, 0.0298 25 | 33, 0.0080, 0.0084, 0.0089 26 | 34, 0.0079, 0.0084, 0.0091 27 | 35, 0.0278, 0.0298, 0.0322 28 | 36, 0.0277, 0.0299, 0.0319 29 | 40, 0.2707, 0.2797, 0.3354 30 | 41, 0.0095, 0.0103, 0.0112 31 | 42, 0.0096, 0.0104, 0.0113 32 | 43, 0.0028, 0.0030, 0.0034 33 | 44, 0.0028, 0.0029, 0.0031 34 | 45, 0.0098, 0.0112, 0.0120 35 | 46, 0.0104, 0.0114, 0.0122 36 | -------------------------------------------------------------------------------- /Benchmarking/Results/Benchmark iPhone 3GS.csv: -------------------------------------------------------------------------------- 1 | 0, 4.2598, 4.3660, 4.6588 2 | 1, 0.0000, 0.0000, 0.0000 3 | 2, 0.0000, 0.0000, 0.0000 4 | 3, 0.0000, 0.0000, 0.0000 5 | 4, 0.0000, 0.0000, 0.0000 6 | 5, 0.0000, 0.0000, 0.0000 7 | 6, 0.0000, 0.0000, 0.0000 8 | 10, 4.1986, 4.3513, 4.5088 9 | 11, 0.5951, 1.5768, 2.3934 10 | 12, 1.0329, 1.5809, 2.1354 11 | 13, 0.2904, 0.3407, 0.4357 12 | 14, 0.2413, 0.3309, 0.3610 13 | 15, 0.6748, 1.2716, 1.6643 14 | 16, 0.7571, 1.3473, 2.3276 15 | 20, 4.2224, 4.3516, 4.5251 16 | 21, 3.1635, 3.2748, 3.5510 17 | 22, 3.2119, 3.2817, 3.4837 18 | 23, 0.4739, 0.4894, 0.6311 19 | 24, 0.4719, 0.4800, 0.5312 20 | 25, 3.4027, 3.5172, 3.7449 21 | 26, 3.3843, 3.4736, 3.7347 22 | 30, 4.1721, 4.3516, 4.5596 23 | 31, 0.9029, 1.2367, 1.5529 24 | 32, 0.9005, 1.2779, 1.5703 25 | 33, 0.1541, 0.1928, 0.2365 26 | 34, 0.1533, 0.1986, 0.2383 27 | 35, 0.8691, 1.1347, 1.5500 28 | 36, 0.8477, 1.1970, 1.6069 29 | 40, 4.1914, 4.3369, 4.6224 30 | 41, 0.3008, 0.3281, 0.4669 31 | 42, 0.2909, 0.3252, 0.4046 32 | 43, 0.0470, 0.0478, 0.0488 33 | 44, 0.0471, 0.0481, 0.0527 34 | 45, 0.3151, 0.3484, 0.4229 35 | 46, 0.3111, 0.3480, 0.4136 36 | -------------------------------------------------------------------------------- /Benchmarking/Results/Benchmark iPodTouch3 GCD.csv: -------------------------------------------------------------------------------- 1 | 0, 4.7533, 4.8965, 5.1468 2 | 1, 0.0000, 0.0000, 0.0000 3 | 2, 0.0000, 0.0000, 0.0000 4 | 3, 0.0000, 0.0000, 0.0000 5 | 4, 0.0000, 0.0000, 0.0000 6 | 5, 0.0000, 0.0000, 0.0000 7 | 6, 0.0000, 0.0000, 0.0000 8 | 10, 4.7739, 4.8658, 5.0876 9 | 11, 0.1744, 0.7295, 1.3352 10 | 12, 0.2169, 0.7354, 1.4760 11 | 13, 0.1846, 0.2992, 0.4073 12 | 14, 0.1816, 0.2980, 0.3568 13 | 15, 0.1840, 0.8697, 1.5107 14 | 16, 0.0834, 0.7477, 1.1599 15 | 20, 4.7807, 4.9025, 5.1423 16 | 21, 3.1918, 3.3175, 3.5093 17 | 22, 3.1522, 3.2813, 3.5148 18 | 23, 0.3052, 0.3182, 0.3852 19 | 24, 0.3061, 0.3171, 0.3410 20 | 25, 3.5837, 3.7104, 3.9758 21 | 26, 3.5487, 3.6969, 3.9776 22 | 30, 4.7613, 4.8927, 5.1026 23 | 31, 0.8053, 1.0718, 1.3799 24 | 32, 0.8069, 1.0888, 1.3447 25 | 33, 0.1194, 0.1577, 0.1813 26 | 34, 0.1249, 0.1523, 0.1777 27 | 35, 0.9295, 1.2310, 1.4301 28 | 36, 0.9240, 1.2278, 1.5636 29 | 40, 4.8084, 4.8773, 5.0500 30 | 41, 0.2822, 0.3202, 0.3642 31 | 42, 0.3091, 0.3291, 0.3686 32 | 43, 0.0302, 0.0313, 0.0341 33 | 44, 0.0295, 0.0308, 0.0328 34 | 45, 0.3281, 0.3669, 0.4102 35 | 46, 0.3359, 0.3710, 0.3960 36 | -------------------------------------------------------------------------------- /Demos/GlobalLogLevel/GlobalLogLevelAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // GlobalLogLevelAppDelegate.m 3 | // GlobalLogLevel 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import "GlobalLogLevelAppDelegate.h" 9 | #import "Stuff.h" 10 | #import "MyLogging.h" 11 | 12 | DDLogLevel ddLogLevel; 13 | 14 | @implementation GlobalLogLevelAppDelegate 15 | @synthesize window; 16 | 17 | static void someFunction(void) 18 | { 19 | DDLogError(@"%@: C_Error", THIS_FILE); 20 | DDLogWarn(@"%@: C_Warn", THIS_FILE); 21 | DDLogInfo(@"%@: C_Info", THIS_FILE); 22 | DDLogVerbose(@"%@: C_Verbose", THIS_FILE); 23 | } 24 | 25 | - (void)applicationDidFinishLaunching:(NSNotification *)aNotification 26 | { 27 | ddLogLevel = DDLogLevelVerbose; 28 | [DDLog addLogger:(id)[DDTTYLogger sharedInstance]]; 29 | 30 | DDLogError(@"%@: Error", THIS_FILE); 31 | DDLogWarn(@"%@: Warn", THIS_FILE); 32 | DDLogInfo(@"%@: Info", THIS_FILE); 33 | DDLogVerbose(@"%@: Verbose", THIS_FILE); 34 | 35 | someFunction(); 36 | 37 | ddLogLevel = DDLogLevelWarning; 38 | 39 | [Stuff doStuff]; 40 | } 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /Xcode/Lumberjack.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 10 | 12 | 13 | 15 | 16 | 18 | 19 | 21 | 22 | 24 | 25 | 27 | 28 | 29 | 31 | 32 | 34 | 35 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /.github/workflows/cocoapods-release.yml: -------------------------------------------------------------------------------- 1 | name: Publish CocoaPods Release 2 | 3 | on: 4 | release: 5 | types: 6 | - published 7 | 8 | env: 9 | LC_CTYPE: en_US.UTF-8 10 | LANG: en_US.UTF-8 11 | 12 | jobs: 13 | publish-podspec: 14 | runs-on: macos-15 15 | steps: 16 | - uses: maxim-lobanov/setup-xcode@v1 17 | with: 18 | xcode-version: ^16.4 19 | - name: Install Platforms 20 | run: | 21 | xcrun simctl delete unavailable # Remove unavailable sims - also boots the simulator 22 | xcodebuild -downloadPlatform iOS 23 | xcodebuild -downloadPlatform tvOS 24 | xcodebuild -downloadPlatform visionOS 25 | xcodebuild -downloadPlatform watchOS 26 | - uses: actions/checkout@v5 27 | - name: Generate Podspec 28 | env: 29 | EXPECTED_VERSION: ${{ github.event.release.tag_name }} 30 | run: ./Scripts/generate-podspec.sh "${EXPECTED_VERSION}" 31 | - name: Publish Podspec 32 | run: pod trunk push CocoaLumberjack.podspec 33 | env: 34 | COCOAPODS_TRUNK_TOKEN: ${{ secrets.COCOAPODS_TRUNK_TOKEN }} 35 | -------------------------------------------------------------------------------- /Demos/ContextFilter/ContextFilter-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSMinimumSystemVersion 26 | ${MACOSX_DEPLOYMENT_TARGET} 27 | NSMainNibFile 28 | MainMenu 29 | NSPrincipalClass 30 | NSApplication 31 | 32 | 33 | -------------------------------------------------------------------------------- /Demos/GlobalLogLevel/GlobalLogLevel-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSMinimumSystemVersion 26 | ${MACOSX_DEPLOYMENT_TARGET} 27 | NSMainNibFile 28 | MainMenu 29 | NSPrincipalClass 30 | NSApplication 31 | 32 | 33 | -------------------------------------------------------------------------------- /Demos/NonArcTest/NonArcTest/NonArcTest-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSMinimumSystemVersion 26 | ${MACOSX_DEPLOYMENT_TARGET} 27 | NSMainNibFile 28 | MainMenu 29 | NSPrincipalClass 30 | NSApplication 31 | 32 | 33 | -------------------------------------------------------------------------------- /Demos/RollingTestMac/RollingTestMac-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSMinimumSystemVersion 26 | ${MACOSX_DEPLOYMENT_TARGET} 27 | NSMainNibFile 28 | MainMenu 29 | NSPrincipalClass 30 | NSApplication 31 | 32 | 33 | -------------------------------------------------------------------------------- /Demos/CustomFormatters/CustomFormatters-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSMinimumSystemVersion 26 | ${MACOSX_DEPLOYMENT_TARGET} 27 | NSMainNibFile 28 | MainMenu 29 | NSPrincipalClass 30 | NSApplication 31 | 32 | 33 | -------------------------------------------------------------------------------- /Demos/CustomLogLevels/CustomLogLevels-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSMinimumSystemVersion 26 | ${MACOSX_DEPLOYMENT_TARGET} 27 | NSMainNibFile 28 | MainMenu 29 | NSPrincipalClass 30 | NSApplication 31 | 32 | 33 | -------------------------------------------------------------------------------- /Demos/OverflowTestMac/OverflowTestMac-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSMinimumSystemVersion 26 | ${MACOSX_DEPLOYMENT_TARGET} 27 | NSMainNibFile 28 | MainMenu 29 | NSPrincipalClass 30 | NSApplication 31 | 32 | 33 | -------------------------------------------------------------------------------- /Demos/SQLiteLogger/SQLiteLogger/SQLiteLogger-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSMinimumSystemVersion 26 | ${MACOSX_DEPLOYMENT_TARGET} 27 | NSMainNibFile 28 | MainMenu 29 | NSPrincipalClass 30 | NSApplication 31 | 32 | 33 | -------------------------------------------------------------------------------- /Demos/Benchmark/Desktop/BenchmarkMac/BenchmarkMac-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSMinimumSystemVersion 26 | ${MACOSX_DEPLOYMENT_TARGET} 27 | NSMainNibFile 28 | MainMenu 29 | NSPrincipalClass 30 | NSApplication 31 | 32 | 33 | -------------------------------------------------------------------------------- /Demos/CoreDataLogger/CoreDataLogger/CoreDataLogger-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSMinimumSystemVersion 26 | ${MACOSX_DEPLOYMENT_TARGET} 27 | NSMainNibFile 28 | MainMenu 29 | NSPrincipalClass 30 | NSApplication 31 | 32 | 33 | -------------------------------------------------------------------------------- /Demos/FineGrainedLogging/FineGrainedLogging-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSMinimumSystemVersion 26 | ${MACOSX_DEPLOYMENT_TARGET} 27 | NSMainNibFile 28 | MainMenu 29 | NSPrincipalClass 30 | NSApplication 31 | 32 | 33 | -------------------------------------------------------------------------------- /Demos/LogFileCompressor/LogFileCompressor-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSMinimumSystemVersion 26 | ${MACOSX_DEPLOYMENT_TARGET} 27 | NSMainNibFile 28 | MainMenu 29 | NSPrincipalClass 30 | NSApplication 31 | 32 | 33 | -------------------------------------------------------------------------------- /Sources/CocoaLumberjackSwiftSupport/include/CocoaLumberjackSwiftSupport/SwiftLogLevel.h: -------------------------------------------------------------------------------- 1 | // Software License Agreement (BSD License) 2 | // 3 | // Copyright (c) 2010-2025, Deusty, LLC 4 | // All rights reserved. 5 | // 6 | // Redistribution and use of this software in source and binary forms, 7 | // with or without modification, are permitted provided that the following conditions are met: 8 | // 9 | // * Redistributions of source code must retain the above copyright notice, 10 | // this list of conditions and the following disclaimer. 11 | // 12 | // * Neither the name of Deusty nor the names of its contributors may be used 13 | // to endorse or promote products derived from this software without specific 14 | // prior written permission of Deusty, LLC. 15 | 16 | #ifndef SwiftLogLevel_h 17 | #define SwiftLogLevel_h 18 | 19 | #import 20 | 21 | #ifndef DD_LOG_LEVEL 22 | // #warning 'DD_LOG_LEVEL' is not defined. Using 'DDLogLevelAll' as default. Consider defining it yourself. 23 | #define DD_LOG_LEVEL DDLogLevelAll 24 | #endif 25 | 26 | static const DDLogLevel DDDefaultLogLevel = DD_LOG_LEVEL; 27 | 28 | #endif /* SwiftLogLevel_h */ 29 | -------------------------------------------------------------------------------- /Tests/CocoaLumberjackTests/DDSampleFileManager.h: -------------------------------------------------------------------------------- 1 | // Software License Agreement (BSD License) 2 | // 3 | // Copyright (c) 2010-2025, Deusty, LLC 4 | // All rights reserved. 5 | // 6 | // Redistribution and use of this software in source and binary forms, 7 | // with or without modification, are permitted provided that the following conditions are met: 8 | // 9 | // * Redistributions of source code must retain the above copyright notice, 10 | // this list of conditions and the following disclaimer. 11 | // 12 | // * Neither the name of Deusty nor the names of its contributors may be used 13 | // to endorse or promote products derived from this software without specific 14 | // prior written permission of Deusty, LLC. 15 | 16 | @import Foundation; 17 | #import 18 | 19 | NS_ASSUME_NONNULL_BEGIN 20 | 21 | @interface DDSampleFileManager : DDLogFileManagerDefault 22 | 23 | @property (nonatomic) NSString *archivedLogFilePath; 24 | @property (nonatomic) NSString *customLogFileName; 25 | 26 | - (instancetype)initWithLogFileHeader:(NSString * __nullable)header NS_DESIGNATED_INITIALIZER; 27 | 28 | @end 29 | 30 | NS_ASSUME_NONNULL_END 31 | -------------------------------------------------------------------------------- /Demos/PerUserLogLevels/PerUserLogLevels/PerUserLogLevels-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSMinimumSystemVersion 26 | ${MACOSX_DEPLOYMENT_TARGET} 27 | NSMainNibFile 28 | MainMenu 29 | NSPrincipalClass 30 | NSApplication 31 | 32 | 33 | -------------------------------------------------------------------------------- /Demos/DispatchQueueLogger/DispatchQueueLogger/DispatchQueueLogger-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSMinimumSystemVersion 26 | ${MACOSX_DEPLOYMENT_TARGET} 27 | NSMainNibFile 28 | MainMenu 29 | NSPrincipalClass 30 | NSApplication 31 | 32 | 33 | -------------------------------------------------------------------------------- /Demos/TestXcodeColors/Desktop/TestXcodeColors/TestXcodeColors-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSMinimumSystemVersion 26 | ${MACOSX_DEPLOYMENT_TARGET} 27 | NSMainNibFile 28 | MainMenu 29 | NSPrincipalClass 30 | NSApplication 31 | 32 | 33 | -------------------------------------------------------------------------------- /Sources/CocoaLumberjackSwift/Supporting Files/CocoaLumberjackSwift.h: -------------------------------------------------------------------------------- 1 | // Software License Agreement (BSD License) 2 | // 3 | // Copyright (c) 2010-2025, Deusty, LLC 4 | // All rights reserved. 5 | // 6 | // Redistribution and use of this software in source and binary forms, 7 | // with or without modification, are permitted provided that the following conditions are met: 8 | // 9 | // * Redistributions of source code must retain the above copyright notice, 10 | // this list of conditions and the following disclaimer. 11 | // 12 | // * Neither the name of Deusty nor the names of its contributors may be used 13 | // to endorse or promote products derived from this software without specific 14 | // prior written permission of Deusty, LLC. 15 | 16 | // This header is mostly blank because all of the declarations are in Swift. 17 | // Still, this header may still be needed so Swift doesn't complain when importing CocoaLumberjackSwift. 18 | 19 | // Make CocoaLumberjack (ObjC) symbols visible. 20 | #import 21 | // In the Xcode project, this header belongs to CocoaLumberjackSwift instead of a separate target. 22 | #import 23 | -------------------------------------------------------------------------------- /Demos/RegisteredDynamicLogging/Desktop/RegisteredLoggingTest/RegisteredLoggingTest-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSMinimumSystemVersion 26 | ${MACOSX_DEPLOYMENT_TARGET} 27 | NSMainNibFile 28 | MainMenu 29 | NSPrincipalClass 30 | NSApplication 31 | 32 | 33 | -------------------------------------------------------------------------------- /Demos/RegisteredDynamicLogging/Desktop/RegisteredLoggingTest/RegisteredLoggingTestAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // RegisteredLoggingTestAppDelegate.m 3 | // RegisteredLoggingTest 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import "RegisteredLoggingTestAppDelegate.h" 9 | #import 10 | #import "Lions.h" 11 | #import "Tigers.h" 12 | 13 | // Log levels: off, error, warn, info, verbose 14 | static DDLogLevel ddLogLevel = DDLogLevelVerbose; 15 | 16 | @implementation RegisteredLoggingTestAppDelegate 17 | 18 | @synthesize window; 19 | 20 | - (void)applicationDidFinishLaunching:(NSNotification *)aNotification 21 | { 22 | [DDLog addLogger:(id)[DDTTYLogger sharedInstance]]; 23 | 24 | [Lions logStuff]; 25 | [Tigers logStuff]; 26 | 27 | NSArray *registeredClassNames = [DDLog registeredClassNames]; 28 | DDLogVerbose(@"registeredClassNames: %@", registeredClassNames); 29 | 30 | NSArray *registeredClasses = [DDLog registeredClasses]; 31 | for (Class class in registeredClasses) 32 | { 33 | [class ddSetLogLevel:DDLogLevelVerbose]; 34 | } 35 | 36 | [Lions logStuff]; 37 | [Tigers logStuff]; 38 | } 39 | 40 | @end 41 | -------------------------------------------------------------------------------- /Demos/CustomFormatters/CustomFormattersAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // CustomFormattersAppDelegate.m 3 | // CustomFormatters 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import "CustomFormattersAppDelegate.h" 9 | 10 | #import 11 | #import "TestFormatter.h" 12 | 13 | // Debug levels: off, error, warn, info, verbose 14 | static const DDLogLevel ddLogLevel = DDLogLevelVerbose; 15 | 16 | @implementation CustomFormattersAppDelegate 17 | @synthesize window; 18 | 19 | - (void)applicationDidFinishLaunching:(NSNotification *)aNotification 20 | { 21 | // Setup logging (with our custom formatter) 22 | 23 | TestFormatter *formatter = [[TestFormatter alloc] init]; 24 | 25 | [[DDOSLogger sharedInstance] setLogFormatter:formatter]; 26 | [[DDTTYLogger sharedInstance] setLogFormatter:formatter]; 27 | 28 | [DDLog addLogger:[DDOSLogger sharedInstance]]; 29 | [DDLog addLogger:(id)[DDTTYLogger sharedInstance]]; 30 | 31 | // Log some messages 32 | 33 | DDLogError(@"Paper Jam!"); 34 | DDLogWarn(@"Low toner"); 35 | DDLogInfo(@"Printing SalesProjections.doc"); 36 | DDLogVerbose(@"Warming up toner"); 37 | } 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /Integration/macOSSwiftIntegration/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleVersion 22 | 1 23 | LSMinimumSystemVersion 24 | $(MACOSX_DEPLOYMENT_TARGET) 25 | NSHumanReadableCopyright 26 | Copyright © 2018 Dmitry Lobanov. All rights reserved. 27 | NSMainNibFile 28 | 29 | NSPrincipalClass 30 | NSApplication 31 | 32 | 33 | -------------------------------------------------------------------------------- /Demos/WebServerIPhone/Vendor/CocoaHTTPServer/Mime/MultipartMessageHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // MultipartMessagePart.h 3 | // HttpServer 4 | // 5 | // Created by Валерий Гаврилов on 29.03.12. 6 | // Copyright (c) 2012 LLC "Online Publishing Partners" (onlinepp.ru). All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | //----------------------------------------------------------------- 13 | // interface MultipartMessageHeader 14 | //----------------------------------------------------------------- 15 | enum { 16 | contentTransferEncoding_unknown, 17 | contentTransferEncoding_7bit, 18 | contentTransferEncoding_8bit, 19 | contentTransferEncoding_binary, 20 | contentTransferEncoding_base64, 21 | contentTransferEncoding_quotedPrintable, 22 | }; 23 | 24 | @interface MultipartMessageHeader : NSObject { 25 | NSMutableDictionary* fields; 26 | int encoding; 27 | NSString* contentDispositionName; 28 | } 29 | @property (strong,readonly) NSDictionary* fields; 30 | @property (readonly) int encoding; 31 | 32 | - (id) initWithData:(NSData*) data formEncoding:(NSStringEncoding) encoding; 33 | @end 34 | -------------------------------------------------------------------------------- /Integration/watchOSSwiftIntegration/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleDisplayName 8 | iOSSwiftIntegration 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleVersion 22 | 1 23 | UISupportedInterfaceOrientations 24 | 25 | UIInterfaceOrientationPortrait 26 | UIInterfaceOrientationPortraitUpsideDown 27 | 28 | WKCompanionAppBundleIdentifier 29 | com.deusty.iOSSwiftIntegration 30 | WKWatchKitApp 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /Demos/FineGrainedLogging/ReadMe.txt: -------------------------------------------------------------------------------- 1 | This Xcode project demonstrates fine grained logging. The Lumberjack framework supports much more than simple log levels. For example, you might want to categorize your log statements according to functionality. This would allow you to toggle log statements according to the modules you are currently developing. For example: 2 | 3 | DDLogEngine(@"Low oil"); 4 | DDLogRadio(@"Switching to FM2"); 5 | 6 | It could even be more advanced than this. You might have log levels within the separate log statements. For example: 7 | 8 | DDLogEngineWarn(@"Low oil"); 9 | DDLogRadioVerbose(@"Switching to FM2"); 10 | 11 | Then you could change log levels per module. 12 | 13 | As you can see, the framework is very flexible. Each project may have different logging requirements, and you can customize the framework to match your needs. 14 | 15 | This particular project demonstrates adding two new log statements based on functionality. They represent hypothetical timers which are critical to the application. The implementation of these timers also spans across multiple files, so there is a need to have central control over the log statements. 16 | 17 | For more information, see the Wiki article: 18 | https://github.com/CocoaLumberjack/CocoaLumberjack/wiki/FineGrainedLogging 19 | -------------------------------------------------------------------------------- /Integration/watchOSSwiftIntegration Extension/Assets.xcassets/Complication.complicationset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "assets" : [ 3 | { 4 | "idiom" : "watch", 5 | "filename" : "Circular.imageset", 6 | "role" : "circular" 7 | }, 8 | { 9 | "idiom" : "watch", 10 | "filename" : "Extra Large.imageset", 11 | "role" : "extra-large" 12 | }, 13 | { 14 | "idiom" : "watch", 15 | "filename" : "Graphic Bezel.imageset", 16 | "role" : "graphic-bezel" 17 | }, 18 | { 19 | "idiom" : "watch", 20 | "filename" : "Graphic Circular.imageset", 21 | "role" : "graphic-circular" 22 | }, 23 | { 24 | "idiom" : "watch", 25 | "filename" : "Graphic Corner.imageset", 26 | "role" : "graphic-corner" 27 | }, 28 | { 29 | "idiom" : "watch", 30 | "filename" : "Graphic Large Rectangular.imageset", 31 | "role" : "graphic-large-rectangular" 32 | }, 33 | { 34 | "idiom" : "watch", 35 | "filename" : "Modular.imageset", 36 | "role" : "modular" 37 | }, 38 | { 39 | "idiom" : "watch", 40 | "filename" : "Utilitarian.imageset", 41 | "role" : "utilitarian" 42 | } 43 | ], 44 | "info" : { 45 | "version" : 1, 46 | "author" : "xcode" 47 | } 48 | } -------------------------------------------------------------------------------- /Integration/Sources/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // Software License Agreement (BSD License) 2 | // 3 | // Copyright (c) 2010-2025, Deusty, LLC 4 | // All rights reserved. 5 | // 6 | // Redistribution and use of this software in source and binary forms, 7 | // with or without modification, are permitted provided that the following conditions are met: 8 | // 9 | // * Redistributions of source code must retain the above copyright notice, 10 | // this list of conditions and the following disclaimer. 11 | // 12 | // * Neither the name of Deusty nor the names of its contributors may be used 13 | // to endorse or promote products derived from this software without specific 14 | // prior written permission of Deusty, LLC. 15 | 16 | #import "AppDelegate.h" 17 | #import "ViewController.h" 18 | 19 | @interface AppDelegate () 20 | @end 21 | 22 | @implementation AppDelegate 23 | 24 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 25 | // Override point for customization after application launch. 26 | UIWindow *window = [UIWindow new]; 27 | window.backgroundColor = [UIColor blackColor]; 28 | self.window = window; 29 | self.window.rootViewController = [ViewController new]; 30 | [self.window makeKeyAndVisible]; 31 | return YES; 32 | } 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /Demos/WebServerIPhone/Vendor/CocoaHTTPServer/HTTPMessage.h: -------------------------------------------------------------------------------- 1 | /** 2 | * The HTTPMessage class is a simple Objective-C wrapper around Apple's CFHTTPMessage class. 3 | **/ 4 | 5 | #import 6 | 7 | #if TARGET_OS_IPHONE 8 | // Note: You may need to add the CFNetwork Framework to your project 9 | #import 10 | #endif 11 | 12 | #define HTTPVersion1_0 ((NSString *)kCFHTTPVersion1_0) 13 | #define HTTPVersion1_1 ((NSString *)kCFHTTPVersion1_1) 14 | 15 | 16 | @interface HTTPMessage : NSObject 17 | { 18 | CFHTTPMessageRef message; 19 | } 20 | 21 | - (id)initEmptyRequest; 22 | 23 | - (id)initRequestWithMethod:(NSString *)method URL:(NSURL *)url version:(NSString *)version; 24 | 25 | - (id)initResponseWithStatusCode:(NSInteger)code description:(NSString *)description version:(NSString *)version; 26 | 27 | - (BOOL)appendData:(NSData *)data; 28 | 29 | - (BOOL)isHeaderComplete; 30 | 31 | - (NSString *)version; 32 | 33 | - (NSString *)method; 34 | - (NSURL *)url; 35 | 36 | - (NSInteger)statusCode; 37 | 38 | - (NSDictionary *)allHeaderFields; 39 | - (NSString *)headerField:(NSString *)headerField; 40 | 41 | - (void)setHeaderField:(NSString *)headerField value:(NSString *)headerFieldValue; 42 | 43 | - (NSData *)messageData; 44 | 45 | - (NSData *)body; 46 | - (void)setBody:(NSData *)body; 47 | 48 | @end 49 | -------------------------------------------------------------------------------- /Integration/watchOSSwiftIntegration Extension/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleDisplayName 8 | watchOSSwiftIntegration Extension 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | XPC! 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleVersion 22 | 1 23 | NSExtension 24 | 25 | NSExtensionAttributes 26 | 27 | WKAppBundleIdentifier 28 | com.deusty.iOSSwiftIntegration.watchkitapp 29 | 30 | NSExtensionPointIdentifier 31 | com.apple.watchkit 32 | 33 | WKExtensionDelegateClassName 34 | $(PRODUCT_MODULE_NAME).ExtensionDelegate 35 | 36 | 37 | -------------------------------------------------------------------------------- /Tests/Tests.xcodeproj/xcshareddata/xcbaselines/432B533F1AAE425D00843E69.xcbaseline/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | runDestinationsByUUID 6 | 7 | AB613018-19D0-4E38-845A-D0F077AAF499 8 | 9 | localComputer 10 | 11 | busSpeedInMHz 12 | 100 13 | cpuCount 14 | 1 15 | cpuKind 16 | Intel Core i7 17 | cpuSpeedInMHz 18 | 2500 19 | logicalCPUCoresPerPackage 20 | 8 21 | modelCode 22 | MacBookPro11,5 23 | physicalCPUCoresPerPackage 24 | 4 25 | platformIdentifier 26 | com.apple.platform.macosx 27 | 28 | targetArchitecture 29 | x86_64 30 | targetDevice 31 | 32 | modelCode 33 | iPhone11,2 34 | platformIdentifier 35 | com.apple.platform.iphonesimulator 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /Integration/Sources/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // Software License Agreement (BSD License) 2 | // 3 | // Copyright (c) 2010-2025, Deusty, LLC 4 | // All rights reserved. 5 | // 6 | // Redistribution and use of this software in source and binary forms, 7 | // with or without modification, are permitted provided that the following conditions are met: 8 | // 9 | // * Redistributions of source code must retain the above copyright notice, 10 | // this list of conditions and the following disclaimer. 11 | // 12 | // * Neither the name of Deusty nor the names of its contributors may be used 13 | // to endorse or promote products derived from this software without specific 14 | // prior written permission of Deusty, LLC. 15 | 16 | import UIKit 17 | 18 | @main 19 | final class AppDelegate: UIResponder, UIApplicationDelegate { 20 | 21 | @objc dynamic var window: UIWindow? 22 | 23 | @objc dynamic func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 24 | // Override point for customization after application launch. 25 | let window = UIWindow() 26 | window.backgroundColor = .black 27 | self.window = window 28 | self.window?.rootViewController = ViewController() 29 | self.window?.makeKeyAndVisible() 30 | return true 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Demos/TestXcodeColors/Mobile/TextXcodeColors/TextXcodeColors-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.0 25 | LSRequiresIPhoneOS 26 | 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /Demos/CaptureASL/CaptureASL/ViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.m 3 | // CaptureASL 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import "ViewController.h" 9 | #import 10 | 11 | @implementation ViewController 12 | { 13 | int count; 14 | aslclient client; 15 | } 16 | 17 | - (void)awakeFromNib 18 | { 19 | [super awakeFromNib]; 20 | 21 | count = 0; 22 | client = asl_open(NULL, "CocoaLumberjack.CaptureASL", 0); 23 | } 24 | 25 | - (IBAction)log:(id)sender 26 | { 27 | NSLog(@"ASL test message %d", count++); 28 | } 29 | 30 | - (IBAction)asl_log:(UIButton *)sender 31 | { 32 | char *level = NULL; 33 | switch (sender.tag) 34 | { 35 | case ASL_LEVEL_EMERG : level = "ASL_LEVEL_EMERG"; break; 36 | case ASL_LEVEL_ALERT : level = "ASL_LEVEL_ALERT"; break; 37 | case ASL_LEVEL_CRIT : level = "ASL_LEVEL_CRIT"; break; 38 | case ASL_LEVEL_ERR : level = "ASL_LEVEL_ERR"; break; 39 | case ASL_LEVEL_WARNING : level = "ASL_LEVEL_WARNING"; break; 40 | case ASL_LEVEL_NOTICE : level = "ASL_LEVEL_NOTICE"; break; 41 | case ASL_LEVEL_INFO : level = "ASL_LEVEL_INFO"; break; 42 | case ASL_LEVEL_DEBUG : level = "ASL_LEVEL_DEBUG"; break; 43 | } 44 | asl_log(client, NULL, (int)sender.tag, "%s test message %d", level, count++); 45 | } 46 | 47 | @end 48 | -------------------------------------------------------------------------------- /Demos/SQLiteLogger/FMDBLogger.h: -------------------------------------------------------------------------------- 1 | // 2 | // FMDBLogger.h 3 | // SQLiteLogger 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import 9 | #import 10 | 11 | @class FMDatabase; 12 | 13 | @interface FMDBLogger : DDAbstractDatabaseLogger 14 | { 15 | @private 16 | NSString *logDirectory; 17 | NSMutableArray *pendingLogEntries; 18 | 19 | FMDatabase *database; 20 | } 21 | 22 | /** 23 | * Initializes an instance set to save it's sqlite file to the given directory. 24 | * If the directory doesn't already exist, it is automatically created. 25 | **/ 26 | - (id)initWithLogDirectory:(NSString *)logDirectory; 27 | 28 | // 29 | // This class inherits from DDAbstractDatabaseLogger. 30 | // 31 | // So there are a bunch of options such as: 32 | // 33 | // @property (assign, readwrite) NSUInteger saveThreshold; 34 | // @property (assign, readwrite) NSTimeInterval saveInterval; 35 | // 36 | // @property (assign, readwrite) NSTimeInterval maxAge; 37 | // @property (assign, readwrite) NSTimeInterval deleteInterval; 38 | // @property (assign, readwrite) BOOL deleteOnEverySave; 39 | // 40 | // And methods such as: 41 | // 42 | // - (void)savePendingLogEntries; 43 | // - (void)deleteOldLogEntries; 44 | // 45 | // These options and methods are documented extensively in DDAbstractDatabaseLogger.h 46 | // 47 | 48 | @end 49 | -------------------------------------------------------------------------------- /Demos/RegisteredDynamicLogging/Mobile/RegisteredLoggingTest/RegisteredLoggingTest-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIconFile 12 | 13 | CFBundleIdentifier 14 | $(PRODUCT_BUNDLE_IDENTIFIER) 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | ${PRODUCT_NAME} 19 | CFBundlePackageType 20 | APPL 21 | CFBundleShortVersionString 22 | 1.0 23 | CFBundleSignature 24 | ???? 25 | CFBundleVersion 26 | 1.0 27 | LSRequiresIPhoneOS 28 | 29 | NSMainNibFile 30 | MainWindow 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /Demos/CaptureASL/CaptureASL/CaptureASL-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1.0 25 | LSRequiresIPhoneOS 26 | 27 | UIMainStoryboardFile 28 | Main 29 | UIRequiredDeviceCapabilities 30 | 31 | armv7 32 | 33 | UISupportedInterfaceOrientations 34 | 35 | UIInterfaceOrientationPortrait 36 | UIInterfaceOrientationLandscapeLeft 37 | UIInterfaceOrientationLandscapeRight 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /Sources/CocoaLumberjack/include/CocoaLumberjack/DDLoggerNames.h: -------------------------------------------------------------------------------- 1 | // Software License Agreement (BSD License) 2 | // 3 | // Copyright (c) 2010-2025, Deusty, LLC 4 | // All rights reserved. 5 | // 6 | // Redistribution and use of this software in source and binary forms, 7 | // with or without modification, are permitted provided that the following conditions are met: 8 | // 9 | // * Redistributions of source code must retain the above copyright notice, 10 | // this list of conditions and the following disclaimer. 11 | // 12 | // * Neither the name of Deusty nor the names of its contributors may be used 13 | // to endorse or promote products derived from this software without specific 14 | // prior written permission of Deusty, LLC. 15 | 16 | #import 17 | 18 | NS_ASSUME_NONNULL_BEGIN 19 | 20 | typedef NSString *DDLoggerName NS_EXTENSIBLE_STRING_ENUM; 21 | 22 | FOUNDATION_EXPORT DDLoggerName const DDLoggerNameOS NS_SWIFT_NAME(DDLoggerName.os); // DDOSLogger 23 | FOUNDATION_EXPORT DDLoggerName const DDLoggerNameFile NS_SWIFT_NAME(DDLoggerName.file); // DDFileLogger 24 | 25 | FOUNDATION_EXPORT DDLoggerName const DDLoggerNameTTY NS_SWIFT_NAME(DDLoggerName.tty); // DDTTYLogger 26 | 27 | API_DEPRECATED("Use DDOSLogger instead", macosx(10.4, 10.12), ios(2.0, 10.0), watchos(2.0, 3.0), tvos(9.0, 10.0)) 28 | FOUNDATION_EXPORT DDLoggerName const DDLoggerNameASL NS_SWIFT_NAME(DDLoggerName.asl); // DDASLLogger 29 | 30 | NS_ASSUME_NONNULL_END 31 | -------------------------------------------------------------------------------- /Demos/WebServerIPhone/Vendor/CocoaHTTPServer/Responses/HTTPRedirectResponse.m: -------------------------------------------------------------------------------- 1 | #import "HTTPRedirectResponse.h" 2 | #import "HTTPLogging.h" 3 | 4 | #if ! __has_feature(objc_arc) 5 | #warning This file must be compiled with ARC. Use -fobjc-arc flag (or convert project to ARC). 6 | #endif 7 | 8 | // Log levels : off, error, warn, info, verbose 9 | // Other flags: trace 10 | static const DDLogLevel httpLogLevel = DDLogLevelOff; // | HTTP_LOG_FLAG_TRACE; 11 | 12 | 13 | @implementation HTTPRedirectResponse 14 | 15 | - (id)initWithPath:(NSString *)path 16 | { 17 | if ((self = [super init])) 18 | { 19 | HTTPLogTrace(); 20 | 21 | redirectPath = [path copy]; 22 | } 23 | return self; 24 | } 25 | 26 | - (UInt64)contentLength 27 | { 28 | return 0; 29 | } 30 | 31 | - (UInt64)offset 32 | { 33 | return 0; 34 | } 35 | 36 | - (void)setOffset:(UInt64)offset 37 | { 38 | // Nothing to do 39 | } 40 | 41 | - (NSData *)readDataOfLength:(NSUInteger)length 42 | { 43 | HTTPLogTrace(); 44 | 45 | return nil; 46 | } 47 | 48 | - (BOOL)isDone 49 | { 50 | return YES; 51 | } 52 | 53 | - (NSDictionary *)httpHeaders 54 | { 55 | HTTPLogTrace(); 56 | 57 | return [NSDictionary dictionaryWithObject:redirectPath forKey:@"Location"]; 58 | } 59 | 60 | - (NSInteger)status 61 | { 62 | HTTPLogTrace(); 63 | 64 | return 302; 65 | } 66 | 67 | - (void)dealloc 68 | { 69 | HTTPLogTrace(); 70 | 71 | } 72 | 73 | @end 74 | -------------------------------------------------------------------------------- /Sources/CocoaLumberjack/include/CocoaLumberjack/DDASLLogCapture.h: -------------------------------------------------------------------------------- 1 | // Software License Agreement (BSD License) 2 | // 3 | // Copyright (c) 2010-2025, Deusty, LLC 4 | // All rights reserved. 5 | // 6 | // Redistribution and use of this software in source and binary forms, 7 | // with or without modification, are permitted provided that the following conditions are met: 8 | // 9 | // * Redistributions of source code must retain the above copyright notice, 10 | // this list of conditions and the following disclaimer. 11 | // 12 | // * Neither the name of Deusty nor the names of its contributors may be used 13 | // to endorse or promote products derived from this software without specific 14 | // prior written permission of Deusty, LLC. 15 | 16 | #import 17 | 18 | @protocol DDLogger; 19 | 20 | NS_ASSUME_NONNULL_BEGIN 21 | 22 | /** 23 | * This class provides the ability to capture the ASL (Apple System Logs) 24 | */ 25 | API_DEPRECATED("Use DDOSLogger instead", macosx(10.4,10.12), ios(2.0,10.0), watchos(2.0,3.0), tvos(9.0,10.0)) 26 | @interface DDASLLogCapture : NSObject 27 | 28 | /** 29 | * Start capturing logs 30 | */ 31 | + (void)start; 32 | 33 | /** 34 | * Stop capturing logs 35 | */ 36 | + (void)stop; 37 | 38 | /** 39 | * The current capture level. 40 | * @note Default log level: DDLogLevelVerbose (i.e. capture all ASL messages). 41 | */ 42 | @property (class) DDLogLevel captureLevel; 43 | 44 | @end 45 | 46 | NS_ASSUME_NONNULL_END 47 | -------------------------------------------------------------------------------- /Demos/RegisteredDynamicLogging/Mobile/RegisteredLoggingTest/RegisteredLoggingTestAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // RegisteredLoggingTestAppDelegate.m 3 | // RegisteredLoggingTest 4 | // 5 | // CocoaLumberjack Demos 6 | // 7 | 8 | #import "RegisteredLoggingTestAppDelegate.h" 9 | #import "RegisteredLoggingTestViewController.h" 10 | #import 11 | #import "Lions.h" 12 | #import "Tigers.h" 13 | 14 | // Log levels: off, error, warn, info, verbose 15 | static DDLogLevel ddLogLevel = DDLogLevelVerbose; 16 | 17 | @implementation RegisteredLoggingTestAppDelegate 18 | 19 | @synthesize window = _window; 20 | @synthesize viewController = _viewController; 21 | 22 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 23 | { 24 | [DDLog addLogger:(id)[DDTTYLogger sharedInstance]]; 25 | 26 | [Lions logStuff]; 27 | [Tigers logStuff]; 28 | 29 | NSArray *registeredClassNames = [DDLog registeredClassNames]; 30 | DDLogVerbose(@"registeredClassNames: %@", registeredClassNames); 31 | 32 | NSArray *registeredClasses = [DDLog registeredClasses]; 33 | for (Class class in registeredClasses) 34 | { 35 | [class ddSetLogLevel:DDLogLevelVerbose]; 36 | } 37 | 38 | [Lions logStuff]; 39 | [Tigers logStuff]; 40 | 41 | self.window.rootViewController = self.viewController; 42 | [self.window makeKeyAndVisible]; 43 | return YES; 44 | } 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /Configs/Module-Release.xcconfig: -------------------------------------------------------------------------------- 1 | // Configuration settings file format documentation can be found at: 2 | // https://help.apple.com/xcode/#/dev745c5c974 3 | 4 | #include "Module-Shared.xcconfig" 5 | 6 | // Specifies whether binary files that are copied during the build, such as in a Copy Bundle Resources or Copy Files build phase, should be stripped of debugging symbols. 7 | COPY_PHASE_STRIP = YES 8 | 9 | // The type of debug information to produce. 10 | DEBUG_INFORMATION_FORMAT = dwarf-with-dsym 11 | 12 | // Controls whether assertion logic provided by `NSAssert` is included in the preprocessed source code or is elided during preprocessing. 13 | ENABLE_NS_ASSERTIONS = NO 14 | 15 | // When this setting is activated, the product will be built with options appropriate for running automated tests, such as making private interfaces accessible to the tests. 16 | ENABLE_TESTABILITY = NO 17 | 18 | // Specifies the degree to which the generated code is optimized for speed and binary size. 19 | GCC_OPTIMIZATION_LEVEL = s 20 | 21 | // Metal debug info 22 | MTL_ENABLE_DEBUG_INFO = NO 23 | 24 | // If enabled, only the active architecture is built. 25 | ONLY_ACTIVE_ARCH = NO 26 | 27 | // This setting controls the way the Swift files in a module are rebuilt. 28 | SWIFT_COMPILATION_MODE = wholemodule 29 | 30 | // Swift optimization (none, speed, size, wholemodule) 31 | SWIFT_OPTIMIZATION_LEVEL = -O 32 | 33 | // If enabled, perform validation checks on the product as part of the build process. 34 | VALIDATE_PRODUCT = YES 35 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2010-2025, Deusty, LLC 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 7 | 8 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 11 | 12 | 3. Neither the name of Deusty nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission of Deusty, LLC. 13 | 14 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 15 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.yml: -------------------------------------------------------------------------------- 1 | name: Feature Request 2 | description: Suggest a new feature for CocoaLumberjack. 3 | type: Feature 4 | body: 5 | - type: checkboxes 6 | id: checklist 7 | attributes: 8 | label: Checklist 9 | options: 10 | - label: I have read the [Documentation](https://github.com/CocoaLumberjack/CocoaLumberjack#documentation) 11 | required: true 12 | - label: I have searched for a similar issue in the [project](https://github.com/CocoaLumberjack/CocoaLumberjack/issues) and found none 13 | required: true 14 | 15 | - type: textarea 16 | id: description 17 | attributes: 18 | label: Description 19 | description: A clear and concise description of what you want to happen. 20 | placeholder: It should be possible to write log messages to a serial output. 21 | validations: 22 | required: true 23 | 24 | - type: textarea 25 | id: alternatives 26 | attributes: 27 | label: Alternatives 28 | description: Describe any alternative solutions or workarounds you've considered. 29 | placeholder: | 30 | - Tried using a different logger 31 | - Wrote my own logger 32 | validations: 33 | required: false 34 | 35 | - type: textarea 36 | id: additional-context 37 | attributes: 38 | label: Additional Context 39 | description: Add any other context about the feature request here. 40 | placeholder: E.g. upload a sample code snippet or project. 41 | validations: 42 | required: false 43 | --------------------------------------------------------------------------------