[slf4j-user] can't understand cast error

pedro rijo pedrorijo91 at gmail.com
Mon Aug 3 12:03:34 CEST 2015


Thank you both for the answer. You were right, after removing the cast
everything works just fine. I never though it would be the reason because,
at the time, I looked on how to use a logger in Scala and that was the
answer I found (possibly on stackoverflow)

2015-08-03 11:00 GMT+01:00 <slf4j-user-request at qos.ch>:

> Send slf4j-user mailing list submissions to
>         slf4j-user at qos.ch
>
> To subscribe or unsubscribe via the World Wide Web, visit
>         http://mailman.qos.ch/mailman/listinfo/slf4j-user
> or, via email, send a message with subject or body 'help' to
>         slf4j-user-request at qos.ch
>
> You can reach the person managing the list at
>         slf4j-user-owner at qos.ch
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of slf4j-user digest..."
>
>
> Today's Topics:
>
>    1. can't understand cast error (pedro rijo)
>    2. Re: can't understand cast error (Joachim Durchholz)
>    3. usubscribe (Jim Weaver)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Sun, 2 Aug 2015 18:40:46 +0100
> From: pedro rijo <pedrorijo91 at gmail.com>
> To: slf4j-user at qos.ch
> Subject: [slf4j-user] can't understand cast error
> Message-ID:
>         <CAPMsMoAeCPmgp6Jn5et-zG7J=
> y5ohMA73zh_7ZDJ2jL0tbu5_A at mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> Hey,
>
> I'm not sure if this is a logback or slf4j issue, so sorry if it's a
> logback issue.
>
> My question is posted on stackoverflow (
>
> http://stackoverflow.com/questions/31772577/org-slf4j-helpers-substitutelogger-cannot-be-cast-to-ch-qos-logback-classic-logg
> ) but I will paste it here:
>
> I've seen some questions very similar to this one (
>
> http://stackoverflow.com/questions/15483309/org-slf4j-helpers-noploggerfactory-cannot-be-cast-to-ch-qos-logback-classic-logg)
> ),
> but none of them received a good answer, or at least one that explained or
> solved this problem
>
> I was able to create a very small project (basically 2 Scala classes - each
> with a logger - and 2 test classes) with a similar structure to my real
> project where I found the problem. The example is available here:
> https://bitbucket.org/pedrorijo91/logger-exp
>
> The problem happens when I run `sbt test`, resulting in the following
> error:
>
>     {14:43:41} (#47) ~/Desktop/logger-exp/log-exp at pedrorijo(master) $ sbt
> test
>     Java HotSpot(TM) 64-Bit Server VM warning: ignoring option
> MaxPermSize=384m; support was removed in 8.0
>     [info] Loading global plugins from /Users/pedrorijo/.sbt/0.13/plugins
>     [info] Loading project definition from
> /Users/pedrorijo/Desktop/git/scala/logger-exp/log-exp/project
>     [info] Set current project to log-exp (in build
> file:/Users/pedrorijo/Desktop/git/scala/logger-exp/log-exp/)
>     [info] HelloTest:
>     [info] Exception encountered when attempting to run a suite with class
> name: HelloTest *** ABORTED ***
>     [info]   java.lang.ExceptionInInitializerError:
>     [info]   at HelloTest$$anonfun$1.apply$mcV$sp(HelloTest.scala:8)
>     [info]   at HelloTest$$anonfun$1.apply(HelloTest.scala:8)
>     [info]   at HelloTest$$anonfun$1.apply(HelloTest.scala:8)
>     [info]   at
>
> org.scalatest.Transformer$$anonfun$apply$1.apply$mcV$sp(Transformer.scala:22)
>     [info]   at org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85)
>     [info]   at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
>     [info]   at org.scalatest.Transformer.apply(Transformer.scala:22)
>     [info]   at org.scalatest.Transformer.apply(Transformer.scala:20)
>     [info]   at
> org.scalatest.FunSuiteLike$$anon$1.apply(FunSuiteLike.scala:166)
>     [info]   at org.scalatest.Suite$class.withFixture(Suite.scala:1122)
>     [info]   ...
>     [info]   Cause: java.lang.ClassCastException:
> org.slf4j.helpers.SubstituteLogger cannot be cast to
> ch.qos.logback.classic.Logger
>     [info]   at com.example.Hello$.<init>(Hello.scala:8)
>     [info]   at com.example.Hello$.<clinit>(Hello.scala)
>     [info]   at HelloTest$$anonfun$1.apply$mcV$sp(HelloTest.scala:8)
>     [info]   at HelloTest$$anonfun$1.apply(HelloTest.scala:8)
>     [info]   at HelloTest$$anonfun$1.apply(HelloTest.scala:8)
>     [info]   at
>
> org.scalatest.Transformer$$anonfun$apply$1.apply$mcV$sp(Transformer.scala:22)
>     [info]   at org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85)
>     [info]   at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
>     [info]   at org.scalatest.Transformer.apply(Transformer.scala:22)
>     [info]   at org.scalatest.Transformer.apply(Transformer.scala:20)
>     [info]   ...
>     SLF4J: The following set of substitute loggers may have been accessed
>     SLF4J: during the initialization phase. Logging calls during this
>     SLF4J: phase were not honored. However, subsequent logging calls to
> these
>     SLF4J: loggers will work as normally expected.
>     SLF4J: See also http://www.slf4j.org/codes.html#substituteLogger
>     SLF4J: com.example.Hello$
>     14:43:52.846 [pool-6-thread-4-ScalaTest-running-WorldTest] INFO
>  com.example.World$ - LOGGING
>     [info] WorldTest:
>     [info] - test
>     [info] Run completed in 456 milliseconds.
>     [info] Total number of tests run: 1
>     [info] Suites: completed 1, aborted 1
>     [info] Tests: succeeded 1, failed 0, canceled 0, ignored 0, pending 0
>     [info] *** 1 SUITE ABORTED ***
>     [error] Error during tests:
>     [error] HelloTest
>     [error] (test:test) sbt.TestsFailedException: Tests unsuccessful
>     [error] Total time: 1 s, completed Aug 2, 2015 2:43:52 PM
>
>
> but if I run each of the tests individually through:
>
> `sbt "testOnly HelloTest"` and `sbt "testOnly WorlTest"` I get no error.
>
> As far as I've seen this is not just a Scala issue, it seems that in Java
> is also possible to happen. Furthermore, I've read that during
> initialization the loggers are substituted by a  Substitute Logger (
> http://www.slf4j.org/codes.html#substituteLogger).
>
> But I can't understand:
>
>  1. why it only happens in tests, and when running both tests?
>  2. why it happens?
>  3. how to debug/solve this problem?
>
>  As I said before, I've created a repository with a working example
> (working, meaning with the error happening) here:
> https://bitbucket.org/pedrorijo91/logger-exp
>
>
>
> --
> Kind Regards,
>
> Pedro Rijo
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <
> http://mailman.qos.ch/pipermail/slf4j-user/attachments/20150802/5a5260bf/attachment-0001.html
> >
>
> ------------------------------
>
> Message: 2
> Date: Sun, 02 Aug 2015 21:32:51 +0200
> From: Joachim Durchholz <jo at durchholz.org>
> To: slf4j-user at qos.ch
> Subject: Re: [slf4j-user] can't understand cast error
> Message-ID: <55BE7063.9060702 at durchholz.org>
> Content-Type: text/plain; charset=windows-1252; format=flowed
>
> Am 02.08.2015 um 19:40 schrieb pedro rijo:
> >   As I said before, I've created a repository with a working example
> > (working, meaning with the error happening) here:
> > https://bitbucket.org/pedrorijo91/logger-exp
>
> I don't know why it's throwing an error with two tests but working with
> just one, but the type cast is definitely wrong - you're trying to force
> it into a ch.qos.logback.classic.Logger, but LoggerFactory will give you
> an org.slf4j.Logger.
> You work with ch.qos.logback.classic.Logger when implementing a logger,
> an appender or anything else in the logging machinery, or possibly
> during logging setup, but not when sending log messages. Code that
> merely creates log messages should work with org.slf4j.Logger.
>
>
> ------------------------------
>
> Message: 3
> Date: Sun, 2 Aug 2015 15:27:10 -0500
> From: Jim Weaver <weaver.je at gmail.com>
> To: slf4j-user at qos.ch
> Subject: [slf4j-user] usubscribe
> Message-ID:
>         <
> CAMgNyYhybhc35ZfJEka-RePd8i_0c7fDqP2ozDKwQOYtqc+KkA at mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
>
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <
> http://mailman.qos.ch/pipermail/slf4j-user/attachments/20150802/7934943e/attachment-0001.html
> >
>
> ------------------------------
>
> Subject: Digest Footer
>
> _______________________________________________
> slf4j-user mailing list
> slf4j-user at qos.ch
> http://mailman.qos.ch/mailman/listinfo/slf4j-user
>
> ------------------------------
>
> End of slf4j-user Digest, Vol 41, Issue 1
> *****************************************
>



-- 
Obrigado,

Pedro Rijo
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.qos.ch/pipermail/slf4j-user/attachments/20150803/f3872f26/attachment.html>


More information about the slf4j-user mailing list