Depends on how complicated your log messages are. Parameterized logging and automatic level-checking guards aren't available, but it's workable. If you use Java 8 at least, they added a lambda version of log messages so you don't even need to worry about string formatting having a performance issue when logging is disabled.
On Tue, 14 Aug 2018 at 05:56, sebb <seb...@gmail.com> wrote: > On 13 August 2018 at 20:01, Matt Sicker <boa...@gmail.com> wrote: > > As an end user of JUL in other projects, let me warn you that you'll > miss a > > lot of abstractions that log4j2 and slf4j provide. :) > > But do they matter in this context? > > Or is JUL (+ adapter) good enough? > > > On Mon, 13 Aug 2018 at 09:50, Gary Gregory <garydgreg...@gmail.com> > wrote: > > > >> I like Remko's suggestion, a nice application of the KISS principle ;-) > >> > >> Gary > >> > >> On Mon, Aug 13, 2018, 07:58 Remko Popma <remko.po...@gmail.com> wrote: > >> > >> > If it was up to me I would use JUL in this particular case to keep the > >> > library free of dependencies. JUL is reasonable since performance is > not > >> an > >> > issue. > >> > > >> > Users that use a logging framework can redirect the JUL logging into > >> their > >> > log file with the JUL adapter of their logging library. > >> > > >> > But that’s just me. > >> > > >> > Remko > >> > > >> > (Shameless plug) Every java main() method deserves > http://picocli.info > >> > > >> > > On Aug 13, 2018, at 21:05, Bruno P. Kinoshita < > >> > brunodepau...@yahoo.com.br.INVALID> wrote: > >> > > > >> > > I was thinking more about using that as an argument for using a > logging > >> > framework, but I think you are right. Probably slf4j/commons-logging + > >> some > >> > default binding, then allowing users to change the implementation. > >> > > > >> > > Perhaps slf4j + log4j? > >> > > > >> > > > >> > > Bruno > >> > > > >> > > ________________________________ > >> > > From: Remko Popma <remko.po...@gmail.com> > >> > > To: Commons Developers List <dev@commons.apache.org> > >> > > Sent: Monday, 13 August 2018 11:55 PM > >> > > Subject: Re: [imaging] IMAGING-154 remove Debug class > >> > > > >> > > > >> > > > >> > > For new projects I would really avoid using Commons Logging. Ceki > had a > >> > point when he created SLF4J. > >> > > > >> > > > >> > > The projects you mentioned that have a dependency on Commons Logging > >> > were started before SLF4J (and perhaps JUL) were created, I believe. > >> > > > >> > > > >> > > > >> > > (Shameless plug) Every java main() method deserves > http://picocli.info > >> > > > >> > > > >> > >>> On Aug 13, 2018, at 18:22, Bruno P. Kinoshita < > >> > brunodepau...@yahoo.com.br.INVALID> wrote: > >> > > > >> > >> Right now that's where I am standing too. If adding a dependency to > >> > log4j is a no-no, then I'd probably check if jul would be OK, or > >> otherwise > >> > maybe import just Log4J's LowLevelLogUtil into the project would work? > >> > > > >> > > > >> > > > >> > >> Commons DBCP, Commons Configuration, Commons Beanutils, Commons > JEXL, > >> > and Commons Validator. All of these have a compile dependency to > Commons > >> > Logging. So it wouldn't be creating a new precedent. > >> > > > >> > > > >> > > > >> > >> Commons Pool and Commons Compress have some optional dependencies, > but > >> > none for logging... maybe an optional dependency, with disabling the > >> > logging by default **could** work? > >> > > > >> > > > >> > > > >> > >> Cheers > >> > > > >> > >> Bruno > >> > > > >> > > > >> > > > >> > >> ________________________________ > >> > > > >> > >> From: Remko Popma <remko.po...@gmail.com> > >> > > > >> > >> To: Commons Developers List <dev@commons.apache.org> > >> > > > >> > >> Sent: Monday, 13 August 2018 9:50 AM > >> > > > >> > >> Subject: Re: [imaging] IMAGING-154 remove Debug class > >> > > > >> > > > >> > > > >> > > > >> > >> If you want to avoid a dependency I would not create a custom > logging > >> > abstraction but just use JUL. Most logging libraries have JUL > adapters so > >> > clients can do the bridging on their side. > >> > > > >> > > > >> > >> (Shameless plug) Every java main() method deserves > >> http://picocli.info > >> > > > >> > > > >> > >>> On Aug 13, 2018, at 0:17, Matt Sicker <boa...@gmail.com> wrote: > >> > > > >> > > > >> > >>> What I've seen done when trying to avoid a logging API dependency > is > >> to > >> > > > >> > >>> create a minimal logging API purely for framework use. This can > have > >> a > >> > > > >> > >>> default System.err style implementation, but the idea is to make > it > >> > easy > >> > > > >> > >>> (and performant hopefully) to bridge into the end user's choice of > >> > > > >> > >>> framework and configuration without actually requiring a real > logging > >> > > > >> > >>> framework (at least until you want to use it in production). > While it > >> > seems > >> > > > >> > >>> overkill, the problem is that neither JUL nor System.err are > >> > sufficient for > >> > > > >> > >>> logging. Even a simple API like Android's logging API can be good > >> > enough to > >> > > > >> > >>> abstract it in a small library. > >> > > > >> > > > >> > >>> For a look at the very simplest route, you can see how Log4j2 > handles > >> > > > >> > >>> logging before any logging classes have been initialized. It's > >> > basically a > >> > > > >> > >>> configurable wrapper around System.err: > >> > > > >> > >>> > >> > > >> > https://github.com/apache/logging-log4j2/blob/master/log4j-api/src/main/java/org/apache/logging/log4j/util/LowLevelLogUtil.java > >> > > > >> > > > >> > > > >> > >>>> On Sun, 12 Aug 2018 at 09:12, Gary Gregory < > garydgreg...@gmail.com> > >> > wrote: > >> > > > >> > > > >> > >>>> You could also log to a pluggable print stream which could be sys > >> err > >> > by > >> > > > >> > >>>> default. Kind of like what JDBC allows. My bias is to Log4j 2 as > >> well > >> > :-) > >> > > > >> > > > >> > >>>> Gary > >> > > > >> > > > >> > >>>>> On Sun, Aug 12, 2018, 08:00 Remko Popma <remko.po...@gmail.com> > >> > wrote: > >> > > > >> > > > >> > >>>>> There’s a couple of considerations about doing logging in a > >> library, > >> > but > >> > > > >> > >>>>> I’ll just mention a few: > >> > > > >> > > > >> > >>>>> * dependencies > >> > > > >> > >>>>> * performance > >> > > > >> > >>>>> * ease of use > >> > > > >> > > > >> > >>>>> * Dependencies* > >> > > > >> > >>>>> Will the library be less attractive to users if it requires an > >> > external > >> > > > >> > >>>>> dependency? Then don’t introduce one (so: use system err or > JUL). > >> On > >> > the > >> > > > >> > >>>>> other hand, if the vast majority of usages is in a context with > >> many > >> > > > >> > >>>> other > >> > > > >> > >>>>> external libraries (like in a web container) you have more > freedom. > >> > > > >> > > > >> > >>>>> *Performance* > >> > > > >> > >>>>> Please take a look at the log4j 2 performance page ( > >> > > > >> > >>>>> https://logging.apache.org/log4j/2.x/performance.html#tradeoffs > ). > >> > > > >> > >>>> Console > >> > > > >> > >>>>> logging is 50x (yes fifty times) slower than file logging. > >> > > > >> > >>>>> That’s a strong argument against system err logging. I’m not a > fan > >> of > >> > > > >> > >>>> JUL, > >> > > > >> > >>>>> but if you need to avoid dependencies you’re better off using > JUL, > >> > that’s > >> > > > >> > >>>>> only 5x slower than log4j. Also depends on how much logging you > >> > expect to > >> > > > >> > >>>>> do in the worst case. > >> > > > >> > > > >> > >>>>> *Ease of use* > >> > > > >> > >>>>> I’m biased and would say that Log4j 2 has the nicest and richest > >> API. > >> > > > >> > >>>>> Console logging (System.err.printf) probably has the poorest > API. > >> > Other > >> > > > >> > >>>>> libraries sit in the middle. > >> > > > >> > > > >> > >>>>> *Final note* > >> > > > >> > >>>>> I would never log to System out, always use system err instead. > >> This > >> > > > >> > >>>>> allows programs using your library to pipe output to other > programs > >> > > > >> > >>>> without > >> > > > >> > >>>>> their output getting mixed with your library’s diagnostic > output. > >> > > > >> > > > >> > >>>>> Hope this helps, > >> > > > >> > > > >> > >>>>> Remko > >> > > > >> > > > >> > >>>>> (Shameless plug) Every java main() method deserves > >> > http://picocli.info > >> > > > >> > > > >> > >>>>>> On Aug 12, 2018, at 21:21, Gilles < > gil...@harfang.homelinux.org> > >> > > > >> > >>>> wrote: > >> > > > >> > > > >> > >>>>>> Hello Bruno. > >> > > > >> > > > >> > >>>>>>> On Sun, 12 Aug 2018 08:56:37 +0000 (UTC), Bruno P. Kinoshita > >> wrote: > >> > > > >> > >>>>>>> Hi all, > >> > > > >> > > > >> > > > >> > >>>>>>> I commented on IMAGING-154, but copying the last comment here > as > >> it > >> > > > >> > >>>>>>> contains the approach I would like to follow to fix the last > >> > change in > >> > > > >> > >>>>>>> the project blocking > >> > > > >> > >>>>>>> a 1.0 release: > >> > > > >> > > > >> > > > >> > >>>>>>> --- > >> > > > >> > > > >> > >>>>>>> So went ahead to re-design the Debug class, in a way users > could > >> > > > >> > >>>>>>> still enable/disable debugging, and also use a PrintStream so > >> that > >> > > > >> > >>>>>>> other thing rather than System.out could be used. > >> > > > >> > > > >> > > > >> > > > >> > >>>>>>> Then, realized removing System.out was the natural next step. > But > >> > > > >> > >>>>>>> alas, the library uses System.out for debugging, but > sometimes it > >> > uses > >> > > > >> > >>>>>>> it for writing to System.out in a "verbose mode". What is more > >> > > > >> > >>>>>>> complicated, is that sometimes classes methods like > `toString()` > >> > are > >> > > > >> > >>>>>>> calling debug methods that receive a PrintStream already. > >> > > > >> > > > >> > > > >> > > > >> > >>>>>>> So I spent some more time quickly comparing what other > libraries > >> > I've > >> > > > >> > >>>>>>> seen being used / or used for image processing: > >> > > > >> > > > >> > > > >> > >>>> > >> > > >> > https://kinoshita.eti.br/2018/08/12/use-of-logging-in-java-image-processing-libraries/ > >> > > > >> > >>>>> . > >> > > > >> > >>>>>>> Turns out only very low level libraries, such as the JNI > bridge > >> for > >> > > > >> > >>>>>>> OpenCV, im4java, and Java's ImageIO can do with just throwing > >> > > > >> > >>>>>>> Exception's. > >> > > > >> > > > >> > > > >> > > > >> > >>>>>>> All other libraries have one way or another of logging. Be it > >> with > >> > > > >> > >>>>>>> JUL, SLF4J, custom loggers, or with the ol' System.out/err. > >> > > > >> > > > >> > > > >> > > > >> > >>>>>>> My preferred compromise for this ticket was to keep Debug, > making > >> > > > >> > >>>>>>> System.out possible but optional, and mark the class internal > >> only. > >> > > > >> > >>>>>>> Now my preferred solution is to keep the Debug internal, but > add > >> a > >> > > > >> > >>>>>>> logger to it. And then also add logging to replace where > >> > System.out is > >> > > > >> > >>>>>>> used for the "verbose" mode. > >> > > > >> > >>>>>>> --- > >> > > > >> > > > >> > > > >> > > > >> > >>>>>>> Any thoughts? Objections? If none, I will try to work on this > >> issue > >> > > > >> > >>>>>>> next weekend, making the Debug class internal only, and > replacing > >> > > > >> > >>>>>>> System.out by a logging utility. After that, we should be > good to > >> > > > >> > >>>>>>> start preparing the vote for 1.0. > >> > > > >> > > > >> > > > >> > > > >> > >>>>>>> * I know it's hard to get a consensus on having logging in > >> Commons > >> > > > >> > >>>>>>> components, as we have normally low level libraries, where > using > >> > > > >> > >>>>>>> logging is not always practical. > >> > > > >> > > > >> > >>>>>> There are Log4j2 experts reading here. It would be interesting > >> > > > >> > >>>>>> to hear them about what is practical or not. There are several > >> > > > >> > >>>>>> aspects to "practical": simplicity, flexibility, compatibility, > >> > > > >> > >>>>>> performance, ... > >> > > > >> > >>>>>> How does Log4j2 fare in these areas? > >> > > > >> > >>>>>> Is there a known (through experience) limit in where it should > >> > > > >> > >>>>>> be used? > >> > > > >> > > > >> > >>>>>>> But I would now argue that Java own > >> > > > >> > >>>>>>> ImageIO is low level. But ImageJ2, Processing, OpenJPEG, and > >> > Commons > >> > > > >> > >>>>>>> Imaging are located at a higher level, some times even using > it > >> for > >> > > > >> > >>>>>>> basic image handling/parsing/reading. > >> > > > >> > > > >> > >>>>>> As with many discussions on this list, conflicting arguments > occur > >> > > > >> > >>>>>> because people lack common (!) definitions. > >> > > > >> > >>>>>> So one goes: "You cannot do <something> in a low-level > component" > >> > > > >> > >>>>>> but does not define "low-level"... > >> > > > >> > > > >> > >>>>>>> * Feel free to cast a counter-argument for it, but please > think > >> > > > >> > >>>>>>> whether you'd still be -0, +0 for this change. We have delayed > >> 1.0 > >> > for > >> > > > >> > >>>>>>> a while, so if you have a strong opinion on not adding a > logger, > >> > > > >> > >>>>>>> please provide an alternative for IMAGING-154. > >> > > > >> > > > >> > >>>>>>> Otherwise we may fail > >> > > > >> > >>>>>>> to prepare a 1.0 release yet again, and then somebody else may > >> > have to > >> > > > >> > >>>>>>> work on it in a few months/years... > >> > > > >> > > > >> > >>>>>> We are there because the project is too rigid about itself as > >> > > > >> > >>>>>> a whole (cf. for example the [RNG] thread about BC). > >> > > > >> > >>>>>> IMHO, it's not the always least common denominator that is the > >> > > > >> > >>>>>> best decision... > >> > > > >> > >>>>>> As you noticed, components most easily stall in their > development > >> > > > >> > >>>>>> for lack of proper review, or risk acceptance (i.e. assume that > >> > > > >> > >>>>>> those who are closer to the code (at a given time) probably > know > >> > > > >> > >>>>>> best... :-/ > >> > > > >> > > > >> > >>>>>> My opinion is that we can take the risk to introduce logging, > and > >> > > > >> > >>>>>> if people complain somehow, take it back later. > >> > > > >> > > > >> > >>>>>>> one possible compromise for this, > >> > > > >> > >>>>>>> might be i) make Debug internal, > >> > > > >> > > > >> > >>>>>> +1 > >> > > > >> > > > >> > >>>>>> [Hmm... Does "internal" mean that minor release can break BC > >> > > > >> > >>>>>> on such a class?] > >> > > > >> > > > >> > >>>>>>> ii) remove all System.out calls, > >> > > > >> > > > >> > >>>>>> +1 or > >> > > > >> > >>>>>> -1 > >> > > > >> > > > >> > >>>>>> [Depends on what "low-level" means here. "stdout"/"stderr" is > >> > > > >> > >>>>>> indeed used in low-level utilities but is the intent the same > >> > > > >> > >>>>>> here?] > >> > > > >> > > > >> > >>>>>>> which means removing the verbose flags, the checks, and calls > to > >> > > > >> > >>>>>>> System.out in there. > >> > > > >> > > > >> > >>>>>> It would be a loss of potentially useful information (e.g. for > >> > > > >> > >>>>>> debugging). > >> > > > >> > > > >> > >>>>>> Regards, > >> > > > >> > >>>>>> Gilles > >> > > > >> > > > >> > > > >> > >>>>>>> Thanks! > >> > > > >> > >>>>>>> Bruno > >> > > > >> > > > >> > >>>>>>> ________________________________ > >> > > > >> > >>>>>>> From: Bruno P. Kinoshita <brunodepau...@yahoo.com.br.INVALID> > >> > > > >> > >>>>>>> To: Commons Developers List <dev@commons.apache.org> > >> > > > >> > >>>>>>> Sent: Tuesday, 6 February 2018 11:30 PM > >> > > > >> > >>>>>>> Subject: Re: [imaging] IMAGING-154 remove Debug class > >> > > > >> > > > >> > > > >> > > > >> > >>>>>>> Hi sebb, > >> > > > >> > > > >> > >>>>>>>> Another aspect of debugging is ensuring that methods are > small > >> and > >> > > > >> > > > >> > >>>>>>>> easily tested independently. > >> > > > >> > >>>>>>>> However this is difficult to do, and care must be taken to > >> ensure > >> > > > >> > >>>> that > >> > > > >> > >>>>>>>> the public API is not unnecessarily extended.. > >> > > > >> > > > >> > >>>>>>> A very good point. > >> > > > >> > > > >> > >>>>>>> The parsers in commons-imaging expose some #dump... methods > >> > > > >> > >>>>>>> ( > >> > > > >> > > > >> > >>>> > >> > > >> > https://github.com/apache/commons-imaging/blob/7e7f96857df999175bb614732e13272a82f7962a/src/main/java/org/apache/commons/imaging/ImageParser.java#L794 > >> > > > >> > >>>>> ). > >> > > > >> > > > >> > >>>>>>> While I can see that parsers may need to dump the data they > are > >> > > > >> > >>>>>>> holding in some structured way for inspecting, reporting, > >> > serializing, > >> > > > >> > >>>>>>> etc, it looks like some other classes were affected by it too. > >> For > >> > > > >> > >>>>>>> example... > >> > > > >> > > > >> > > > >> > >>>>>>> A JPEG Segment has a #dump() method > >> > > > >> > > > >> > > > >> > > > >> > > > >> > >>>> > >> > > >> > https://github.com/apache/commons-imaging/blob/7e7f96857df999175bb614732e13272a82f7962a/src/main/java/org/apache/commons/imaging/formats/jpeg/segments/Segment.java#L34 > >> > > > >> > > > >> > > > >> > >>>>>>> which gets defined in each subclass of Segment. It can be > >> confusing > >> > > > >> > >>>>>>> to have a method such as #dump() in a Segment, from the point > of > >> > view > >> > > > >> > >>>>>>> of someone writing a photo editor for example. The user could > use > >> > that > >> > > > >> > >>>>>>> to pass his/her own logger's PrintWriter, which would make > >> > removing or > >> > > > >> > >>>>>>> changing logging in the future in commons-imaging. > >> > > > >> > > > >> > > > >> > >>>>>>> If we keep the Debug class, and make it internal, there would > >> still > >> > > > >> > >>>>>>> be these methods to take care. And there are some methods > where > >> > users > >> > > > >> > >>>>>>> can provide a PrintWriter, while others instead use System.out > >> > > > >> > >>>>>>> (e.g. > >> > > > >> > > > >> > >>>> > >> > > >> > https://github.com/apache/commons-imaging/blob/7e7f96857df999175bb614732e13272a82f7962a/src/main/java/org/apache/commons/imaging/FormatCompliance.java#L70 > >> > > > >> > >>>>> ). > >> > > > >> > > > >> > >>>>>>> Cheers > >> > > > >> > >>>>>>> Bruno > >> > > > >> > > > >> > >>>>>>> ________________________________ > >> > > > >> > >>>>>>> From: sebb <seb...@gmail.com> > >> > > > >> > >>>>>>> To: Commons Developers List <dev@commons.apache.org>; Bruno > P. > >> > > > >> > >>>>>>> Kinoshita <brunodepau...@yahoo.com.br> > >> > > > >> > >>>>>>> Sent: Tuesday, 6 February 2018 11:06 PM > >> > > > >> > >>>>>>> Subject: Re: [imaging] IMAGING-154 remove Debug class > >> > > > >> > > > >> > > > >> > > > >> > >>>>>>> On 6 February 2018 at 09:52, Bruno P. Kinoshita > >> > > > >> > >>>>>>> <brunodepau...@yahoo.com.br.invalid> wrote: > >> > > > >> > >>>>>>>> Hi Jorg, > >> > > > >> > > > >> > >>>>>>>> I'd be fine with that solution too. I think this one would > cause > >> > the > >> > > > >> > >>>>> smaller change to the code as is. > >> > > > >> > > > >> > >>>>>>>> I believe my preference is still to remove the Debug class. > But > >> > > > >> > >>>>> between logging and making Debug internal only, I'd choose > making > >> it > >> > > > >> > >>>>> internal. > >> > > > >> > > > >> > >>>>>>> +1 > >> > > > >> > > > >> > >>>>>>> I think making it internal means it can still be dropped > later. > >> > > > >> > > > >> > >>>>>>>> Looking forward to hearing what others think about these > >> options. > >> > > > >> > > > >> > > > >> > >>>>>>> Another aspect of debugging is ensuring that methods are small > >> and > >> > > > >> > >>>>>>> easily tested independently. > >> > > > >> > >>>>>>> However this is difficult to do, and care must be taken to > ensure > >> > that > >> > > > >> > >>>>>>> the public API is not unnecessarily extended.. > >> > > > >> > > > >> > >>>>>>>> Thanks > >> > > > >> > >>>>>>>> Bruno > >> > > > >> > > > >> > > > >> > >>>>>>>> ________________________________ > >> > > > >> > >>>>>>>> From: Jörg Schaible <joerg.schai...@bpm-inspire.com> > >> > > > >> > >>>>>>>> To: dev@commons.apache.org > >> > > > >> > >>>>>>>> Sent: Tuesday, 6 February 2018 9:24 PM > >> > > > >> > >>>>>>>> Subject: Re: [imaging] IMAGING-154 remove Debug class > >> > > > >> > > > >> > > > >> > > > >> > >>>>>>>> Hi Bruno, > >> > > > >> > > > >> > > > >> > >>>>>>>> if it might also be helpful to our users, why not keep and > >> provide > >> > > > >> > >>>> it. > >> > > > >> > >>>>> As > >> > > > >> > > > >> > >>>>>>>> I understand it, the Debug class is a tool helping in > >> development > >> > to > >> > > > >> > > > >> > >>>>>>>> analyze some behavior. > >> > > > >> > > > >> > > > >> > >>>>>>>> Nothing stops us from declaring this class internal (we might > >> even > >> > > > >> > >>>> put > >> > > > >> > >>>>> it > >> > > > >> > > > >> > >>>>>>>> into a package "internal" or "debug") that might be changed > >> > without > >> > > > >> > > > >> > >>>>>>>> further comment. Nobody may rely on it in production code, > but > >> > during > >> > > > >> > > > >> > >>>>>>>> development it might be helpful. With such an approach we > might > >> > not > >> > > > >> > >>>>> have > >> > > > >> > > > >> > >>>>>>>> a need to find a better interface to provide this > functionality. > >> > > > >> > > > >> > > > >> > >>>>>>>> Just my 2¢, > >> > > > >> > > > >> > >>>>>>>> Jörg > >> > > > >> > > > >> > > > >> > > > >> > >>>>>>>> Am Mon, 05 Feb 2018 12:20:58 +0000 schrieb Bruno P. > Kinoshita: > >> > > > >> > > > >> > > > >> > >>>>>>>>> Hello, > >> > > > >> > > > >> > > > >> > > > >> > >>>>>>>>> If memory serves me well, some time ago we had a discussion > >> > around > >> > > > >> > > > >> > >>>>>>>>> sanselan & commons-imaging 1.0. One of the issues with > >> > > > >> > >>>> commons-imaging > >> > > > >> > > > >> > >>>>>>>>> 1.0 was the Debug class. > >> > > > >> > > > >> > > > >> > > > >> > >>>>>>>>> https://issues.apache.org/jira/browse/IMAGING-154 > >> > > > >> > > > >> > > > >> > > > >> > >>>>>>>>> I finished the pull request, but Gilles raised an important > >> > point, > >> > > > >> > >>>>> about > >> > > > >> > > > >> > >>>>>>>>> discussing other alternatives first. > >> > > > >> > > > >> > > > >> > > > >> > >>>>>>>>> Initially I am against logging in low level libraries, > >> especially > >> > > > >> > > > >> > >>>>>>>>> commons components. But some time ago I had to debug TIFF > >> issues > >> > in > >> > > > >> > > > >> > >>>>>>>>> commons-imaging, and having the dump methods was a > tremendous > >> > help. > >> > > > >> > > > >> > > > >> > > > >> > > > >> > > > >> > >>>>>>>>> The issue is that some imaging algorithms/processing have a > lot > >> > of > >> > > > >> > > > >> > >>>>>>>>> variables that can be altered. And keeping an eye on all of > >> them > >> > in > >> > > > >> > >>>>> the > >> > > > >> > > > >> > >>>>>>>>> debugger can be quite hard - though not impossible. > >> > > > >> > > > >> > > > >> > > > >> > >>>>>>>>> So all in all, now I am more confident to proceed without > the > >> > Debug > >> > > > >> > > > >> > >>>>>>>>> class. But some users could have a hard time investigating > >> > possible > >> > > > >> > > > >> > >>>>>>>>> issues in the library without seeing what's going on within > the > >> > > > >> > >>>>> library. > >> > > > >> > > > >> > > > >> > > > >> > >>>>>>>>> IMO, that could be solved with the logging/dump features... > or > >> > > > >> > >>>>> through a > >> > > > >> > > > >> > >>>>>>>>> better design, especially around exception > handling/throwing. > >> The > >> > > > >> > >>>>> latter > >> > > > >> > > > >> > >>>>>>>>> is my preferred approach. Instead of logging, I prefer - > >> whenever > >> > > > >> > > > >> > >>>>>>>>> possible - that low level libraries throw exceptions and > let me > >> > > > >> > >>>> handle > >> > > > >> > > > >> > >>>>>>>>> the logging. > >> > > > >> > > > >> > > > >> > > > >> > > > >> > > > >> > >>>>>>>>> So, any thoughts? :) I'm +1 to remove the Debug class, and > +0 > >> to > >> > a > >> > > > >> > > > >> > >>>>>>>>> logging added to commons-imaging. > >> > > > >> > > > >> > > > >> > > > >> > >>>>>>>>> Bruno > >> > > > >> > > > >> > > > >> > >>>>>> > >> > --------------------------------------------------------------------- > >> > > > >> > >>>>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > >> > > > >> > >>>>>> For additional commands, e-mail: dev-h...@commons.apache.org > >> > > > >> > > > >> > > > >> > > > >> > > > >> > > > >> > >>> -- > >> > > > >> > >>> Matt Sicker <boa...@gmail.com> > >> > > > >> > > > >> > > > >> > >> > --------------------------------------------------------------------- > >> > > > >> > >> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > >> > > > >> > >> For additional commands, e-mail: dev-h...@commons.apache.org > >> > > > >> > > > >> > >> > --------------------------------------------------------------------- > >> > > > >> > >> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > >> > > > >> > >> For additional commands, e-mail: dev-h...@commons.apache.org > >> > > > >> > > > >> > > > >> > > > --------------------------------------------------------------------- > >> > > > >> > > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > >> > > > >> > > For additional commands, e-mail: dev-h...@commons.apache.org > >> > > > >> > > > --------------------------------------------------------------------- > >> > > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > >> > > For additional commands, e-mail: dev-h...@commons.apache.org > >> > > > >> > > >> > --------------------------------------------------------------------- > >> > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > >> > For additional commands, e-mail: dev-h...@commons.apache.org > >> > > >> > > >> > > > > > > -- > > Matt Sicker <boa...@gmail.com> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > For additional commands, e-mail: dev-h...@commons.apache.org > > -- Matt Sicker <boa...@gmail.com>