DaveWoodCom / XCGLogger

A debug log framework for use in Swift projects. Allows you to log details to the console (and optionally a file), just like you would have with NSLog() or print(), but with additional information, such as the date, function name, filename and line number.
MIT License
3.93k stars 477 forks source link

Does not seem to work in linux environment #288

Open neilt opened 5 years ago

neilt commented 5 years ago

Tried to use XCGLogger in Fedora 30 with swift-lang.

Get the following error:

#include "/home/admin/rss2pg/.build/checkouts/XCGLogger/Sources/ObjcExceptionBridging/include/ObjcExceptionBridging.h"
         ^
/home/admin/rss2pg/.build/checkouts/XCGLogger/Sources/ObjcExceptionBridging/include/ObjcExceptionBridging.h:10:9: error: 'Foundation/Foundation.h' file not found
#import <Foundation/Foundation.h>
        ^
/home/admin/rss2pg/.build/checkouts/XCGLogger/Sources/XCGLogger/Misc/HelperFunctions.swift:11:8: error: could not build C module 'ObjcExceptionBridging'
import ObjcExceptionBridging
       ^

XCGLogger is being installed using:

 .package(url: "https://github.com/DaveWoodCom/XCGLogger.git", from: "7.0.0"),

1) Is there a way to install using the package manager without ObjcExceptionBridging since linux does not have the Objc runtime?

2) Any chance of making XCGLogger work with linux using #if statements? Maybe #if !os(linux) around the ObjcExceptionBridging stuff.

3) Maybe there are other reasons this will never work and it is futile to try? If so, what reasons?

BTW This is on

Swift version 5.0.1 (swift-5.0.1-RELEASE)
Target: x86_64-unknown-linux-gnu
phimage commented 5 years ago

ObjcExceptionBridging stuff aim to catch obj runtime errors https://github.com/DaveWoodCom/XCGLogger/blob/64dce71f6b8657df1aa7ab94cf748dad744b69af/Sources/XCGLogger/Misc/HelperFunctions.swift#L28

inside FileDestination https://github.com/DaveWoodCom/XCGLogger/blob/64dce71f6b8657df1aa7ab94cf748dad744b69af/Sources/XCGLogger/Destinations/FileDestination.swift#L106

so @neilt you can PR on HelperFunctions.swift

if !os(Linux) #endif on import and on the two _try_objc call