CleanroomLogger, a pure Swift logging engine


(E. Maloney) #1

Over on some of the other Swift mailing lists, people have been asking about Swift logging engines; since this list seems to be the right place to discuss them, I hope you'll indulge me in letting you know about CleanroomLogger, a real logging engine written in pure Swift:

https://github.com/emaloney/CleanroomLogger

Why do I say it's a real logging engine? Because the other pure Swift loggers I've run across are all just wrappers around print().

Loggers that just call print() aren't actually sending messages to the system console; if you use these loggers and expect to read their output through Console.app, you'll be out of luck.

CleanroomLogger writes to the Apple System Log (ASL) facility, just like NSLog() does. But unlike NSLog(), which can bog down your app if not used judiciously, CleanroomLogger is designed to be performant, so you don't have to worry that your desire for diagnostics is going to kill your app's performance.

CleanroomLogger is mature enough to be shipping in significantly-revenue-generating apps, and the project now has over 500 stars on GitHub. I hope you'll find it useful.

In the meantime, if you're interested in furthering the state of Swift logging, please reach out to me. Alex Kolov has set up a swift-logging org on GitHub to help drive Swift logging standards; community involvement desired:

https://github.com/swift-logging

Thanks for your time,
E. Maloney
Gilt Groupe


(Jeremy Pereira) #2

Hi,

One thing your logger is missing is the ability to set different log levels for different modules and source files. Moreover, I think it would actually be quite difficult for you to add this functionality with all the static functions.

···

On 9 Dec 2015, at 20:52, Evan Maloney via swift-users <swift-users@swift.org> wrote:

Over on some of the other Swift mailing lists, people have been asking about Swift logging engines; since this list seems to be the right place to discuss them, I hope you'll indulge me in letting you know about CleanroomLogger, a real logging engine written in pure Swift:

https://github.com/emaloney/CleanroomLogger

Why do I say it's a real logging engine? Because the other pure Swift loggers I've run across are all just wrappers around print().

Loggers that just call print() aren't actually sending messages to the system console; if you use these loggers and expect to read their output through Console.app, you'll be out of luck.

CleanroomLogger writes to the Apple System Log (ASL) facility, just like NSLog() does. But unlike NSLog(), which can bog down your app if not used judiciously, CleanroomLogger is designed to be performant, so you don't have to worry that your desire for diagnostics is going to kill your app's performance.

CleanroomLogger is mature enough to be shipping in significantly-revenue-generating apps, and the project now has over 500 stars on GitHub. I hope you'll find it useful.

In the meantime, if you're interested in furthering the state of Swift logging, please reach out to me. Alex Kolov has set up a swift-logging org on GitHub to help drive Swift logging standards; community involvement desired:

https://github.com/swift-logging

Thanks for your time,
E. Maloney
Gilt Groupe

_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users


(E. Maloney) #3

Hi Jeremy,

The statics on the Log struct are a convenience facade. They supply a simple, pre-defined way for application developers to log at the five most common log levels. The rationale for it is described here:

https://github.com/emaloney/CleanroomLogger#full-disclosure-a-note-about-global-state

However, you can have far more granular control if you wish by instantiating and using your own LogChannels and LogReceptacles.

That said, if this logger doesn't work for you, and if you have strong opinions about how logging should work in Swift, you might want to consider joining the Swift Standard Logging Community, which grew out of the various Swift mailing lists, and is looking to tackle common use cases:

https://github.com/swift-logging/specifications

All the best,
E.

···

On Dec 10, 2015, at 4:46 AM, Jeremy Pereira <jeremy.j.pereira@googlemail.com> wrote:

Hi,

One thing your logger is missing is the ability to set different log levels for different modules and source files. Moreover, I think it would actually be quite difficult for you to add this functionality with all the static functions.

On 9 Dec 2015, at 20:52, Evan Maloney via swift-users <swift-users@swift.org> wrote:

Over on some of the other Swift mailing lists, people have been asking about Swift logging engines; since this list seems to be the right place to discuss them, I hope you'll indulge me in letting you know about CleanroomLogger, a real logging engine written in pure Swift:

https://github.com/emaloney/CleanroomLogger

Why do I say it's a real logging engine? Because the other pure Swift loggers I've run across are all just wrappers around print().

Loggers that just call print() aren't actually sending messages to the system console; if you use these loggers and expect to read their output through Console.app, you'll be out of luck.

CleanroomLogger writes to the Apple System Log (ASL) facility, just like NSLog() does. But unlike NSLog(), which can bog down your app if not used judiciously, CleanroomLogger is designed to be performant, so you don't have to worry that your desire for diagnostics is going to kill your app's performance.

CleanroomLogger is mature enough to be shipping in significantly-revenue-generating apps, and the project now has over 500 stars on GitHub. I hope you'll find it useful.

In the meantime, if you're interested in furthering the state of Swift logging, please reach out to me. Alex Kolov has set up a swift-logging org on GitHub to help drive Swift logging standards; community involvement desired:

https://github.com/swift-logging

Thanks for your time,
E. Maloney
Gilt Groupe

_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users


(Jeremy Pereira) #4

I’ve joined the list.

···

On 11 Dec 2015, at 06:09, Evan Maloney <emaloney@gilt.com> wrote:

Hi Jeremy,

The statics on the Log struct are a convenience facade. They supply a simple, pre-defined way for application developers to log at the five most common log levels. The rationale for it is described here:

https://github.com/emaloney/CleanroomLogger#full-disclosure-a-note-about-global-state

However, you can have far more granular control if you wish by instantiating and using your own LogChannels and LogReceptacles.

That said, if this logger doesn't work for you, and if you have strong opinions about how logging should work in Swift, you might want to consider joining the Swift Standard Logging Community, which grew out of the various Swift mailing lists, and is looking to tackle common use cases:

https://github.com/swift-logging/specifications

All the best,
E.

On Dec 10, 2015, at 4:46 AM, Jeremy Pereira <jeremy.j.pereira@googlemail.com> wrote:

Hi,

One thing your logger is missing is the ability to set different log levels for different modules and source files. Moreover, I think it would actually be quite difficult for you to add this functionality with all the static functions.

On 9 Dec 2015, at 20:52, Evan Maloney via swift-users <swift-users@swift.org> wrote:

Over on some of the other Swift mailing lists, people have been asking about Swift logging engines; since this list seems to be the right place to discuss them, I hope you'll indulge me in letting you know about CleanroomLogger, a real logging engine written in pure Swift:

https://github.com/emaloney/CleanroomLogger

Why do I say it's a real logging engine? Because the other pure Swift loggers I've run across are all just wrappers around print().

Loggers that just call print() aren't actually sending messages to the system console; if you use these loggers and expect to read their output through Console.app, you'll be out of luck.

CleanroomLogger writes to the Apple System Log (ASL) facility, just like NSLog() does. But unlike NSLog(), which can bog down your app if not used judiciously, CleanroomLogger is designed to be performant, so you don't have to worry that your desire for diagnostics is going to kill your app's performance.

CleanroomLogger is mature enough to be shipping in significantly-revenue-generating apps, and the project now has over 500 stars on GitHub. I hope you'll find it useful.

In the meantime, if you're interested in furthering the state of Swift logging, please reach out to me. Alex Kolov has set up a swift-logging org on GitHub to help drive Swift logging standards; community involvement desired:

https://github.com/swift-logging

Thanks for your time,
E. Maloney
Gilt Groupe

_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users