Well, when I pack my project into a stand alone jar and run java -jar
myproject-standalone.jar inside a terminal, the Android controller's debug
information gets printed out which clusters the terminal output, making
other vital information hard to identify. Thus I would want to find a way
to suppress its output.

BTW, I came up with an UGLY solution:

(let [err System/err]
  (System/setErr (java.io.PrintStream. (java.io.FileOutputStream.
"/dev/null")))
  (try
    (throw (Exception. "Hello"))
    (catch Exception e (.printStackTrace e)))
  (System/setErr err))

This time, the stack trace gets suppressed. But it looks really UGLY and by
no means, in efficient as it opens /dev/null everytime.

What is the difference between *err* and System/err?!


2013/3/5 Jim - FooBar(); <jimpil1...@gmail.com>

>  still doesn't work though! strange...
> why would you want to do this anyway?
>
> Jim
>
>
>
> On 05/03/13 14:35, Jim - FooBar(); wrote:
>
> but then it's pretty trivial to adapt it:
>
> (defmacro with-out-err-str
>   "Evaluates exprs in a context in which *out* and *err* ire bound to a fresh
>   StringWriter.  Returns the string created by any nested printing
>   calls."
>   {:added "1.0"}
>   [& body]
>   `(let [s# (new java.io.StringWriter)]
>      (binding [*out* s# *err* s#]
>        ~@body
>        (str s#))))
>
> Jim
>
>
>
>
> On 05/03/13 14:33, Jim - FooBar(); wrote:
>
> aaa sorry...I guess I should have tested first...
>
> Jim
>
>
> On 05/03/13 14:24, bruce li wrote:
>
> Thanks, Jim. But with-out-str only works for output to *out*(stdout), but
> not *err*(stderr). A quick test is:
> (with-out-str
>           (try
>            (throw (Exception. "Hello"))
>            (catch Exception e
>                   (.printStackTrace e))))
> which it returns: "" but the stack trace still gets printed out:
> java.lang.Exception: Hello
>     at user$eval2774$fn__2775.invoke(NO_SOURCE_FILE:1)
>     at user$eval2774.invoke(NO_SOURCE_FILE:1)
>     at clojure.lang.Compiler.eval(Compiler.java:6511)
>     at clojure.lang.Compiler.eval(Compiler.java:6477)
>     at clojure.core$eval.invoke(core.clj:2797)
>     at clojure.main$repl$read_eval_print__6405.invoke(main.clj:245)
>     at clojure.main$repl$fn__6410.invoke(main.clj:266)
>     at clojure.main$repl.doInvoke(main.clj:266)
>     at clojure.lang.RestFn.invoke(RestFn.java:1096)
>     at
> clojure.tools.nrepl.middleware.interruptible_eval$evaluate$fn__1402.invoke(interruptible_eval.clj:57)
>     at clojure.lang.AFn.applyToHelper(AFn.java:159)
>     at clojure.lang.AFn.applyTo(AFn.java:151)
>     at clojure.core$apply.invoke(core.clj:601)
>     at clojure.core$with_bindings_STAR_.doInvoke(core.clj:1771)
>     at clojure.lang.RestFn.invoke(RestFn.java:425)
>     at
> clojure.tools.nrepl.middleware.interruptible_eval$evaluate.invoke(interruptible_eval.clj:42)
>     at
> clojure.tools.nrepl.middleware.interruptible_eval$interruptible_eval$fn__1443$fn__1445.invoke(interruptible_eval.clj:170)
>     at clojure.core$comp$fn__4034.invoke(core.clj:2278)
>     at
> clojure.tools.nrepl.middleware.interruptible_eval$run_next$fn__1436.invoke(interruptible_eval.clj:137)
>     at clojure.lang.AFn.run(AFn.java:24)
>     at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
>     at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
>     at java.lang.Thread.run(Thread.java:722
>
> 2013/3/5 Jim - FooBar(); <jimpil1...@gmail.com>
>
>> I don't know if you can suppress it, but you can certainly ignore it with
>> 'without-str' which will give you what was supposed to be printed out, as a
>> string...then it's up to you what to do with it... :)
>>
>> HTH,
>> Jim
>>
>>
>> On 05/03/13 08:56, bruce li wrote:
>>
>>>  Hi, guys,
>>>
>>> I'm currently playing clojure with android monkey runner. So far it
>>> works fine but just one unpleasant thing -- the android monkey runner
>>> default prints a lot of junk information to stderr such as:
>>>
>>> March 05, 2013 4:46:47 pm com.android.chimpchat.ChimpManager
>>> sendMonkeyEventAndGetResponse
>>>
>>> These printing operations are evaluated inside its library when I call a
>>> method such as IChimpDevice.touch.
>>>
>>> I'm writing some wrappers around the api:
>>>
>>> (defn send-touch [^IChimpDevice device x y]
>>>   (.touch device x y TouchPressType/DOWN_AND_UP))
>>>
>>> Is it possible to suppress the its output to stderr and make it
>>> something like(in pseudo code):
>>> (with-stderr-discard
>>>   (.touch device x y TouchPressType/DOWN_AND_UP))
>>>
>>> I cannot discard the whole program's stderr output with commands like
>>> java -jar xxxxxx.jar 2>/dev/null
>>>
>>> since I need vital stack trace information from other places for debug
>>> purpose.
>>>
>>> Any help would be appreciated.
>>>
>>>
>>>  --
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To post to this group, send email to clojure@googlegroups.com
>>> Note that posts from new members are moderated - please be patient with
>>> your first post.
>>> To unsubscribe from this group, send email to
>>> clojure+unsubscr...@googlegroups.com
>>> For more options, visit this group at
>>> http://groups.google.com/group/clojure?hl=en
>>> ---
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to clojure+unsubscr...@googlegroups.com.
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>
>>>
>>>
>> --
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clojure@googlegroups.com
>> Note that posts from new members are moderated - please be patient with
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+unsubscr...@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>> --- You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to clojure+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>>
>>
> --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>
>
>
>
>  --
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to