Android Question How to clean application log?

Alex_197

Well-Known Member
Licensed User
Longtime User
Hi all.

I tried to play with this example Uncaught Exceptions and what I found is that if I run this example multiple times the log keeps entries from the previous runs.

Let say I started this app on 10/17/2020 at 10:36:43 AM.

Then on 10/17/2020 at 10:53:42 AM.

App Log:
--------- beginning of crash
--------- beginning of system
--------- beginning of main
~i:*** Service (starter) Create ***
~i:** Service (starter) Start **
~i:** Activity (main) Create, isFirst = true **
~i:** Activity (main) Resume **
~l14196609:Current time: 10:36:43
~l24196609:Current time: 10:36:44
~l34196609:Current time: 10:36:45
~l44196609:Current time: 10:36:46
~l54196609:Current time: 10:36:47
~l64262145:Trying to set 'i'...
~e:main_button1_click (java line: 366)
~e:java.lang.NumberFormatException: For input string: "fdgdfg"
~e: at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
~e: at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
~e: at java.lang.Double.parseDouble(Double.java:538)
~e: at b4a.example.main._button1_click(main.java:366)
~e: at java.lang.reflect.Method.invoke(Native Method)
~e: at anywheresoftware.b4a.BA.raiseEvent2(BA.java:213)
~e: at anywheresoftware.b4a.BA.raiseEvent2(BA.java:197)
~e: at anywheresoftware.b4a.BA.raiseEvent(BA.java:193)
~e: at anywheresoftware.b4a.objects.ViewWrapper$1.onClick(ViewWrapper.java:80)
~e: at android.view.View.performClick(View.java:7288)
~e: at android.view.View.performClickInternal(View.java:7258)
~e: at android.view.View.access$4000(View.java:808)
~e: at android.view.View$PerformClick.run(View.java:28019)
~e: at android.os.Handler.handleCallback(Handler.java:883)
~e: at android.os.Handler.dispatchMessage(Handler.java:100)
~e: at android.os.Looper.loop(Looper.java:214)
~e: at android.app.ActivityThread.main(ActivityThread.java:7615)
~e: at java.lang.reflect.Method.invoke(Native Method)
~e: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
~e: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)
~i:*** Service (starter) Create ***
~i:** Service (starter) Start **
~i:** Activity (main) Create, isFirst = true **
~i:** Activity (main) Resume **
~l14196609:Current time: 10:53:42
~l24196609:Current time: 10:53:43
~l34196609:Current time: 10:53:44
~l44196609:Current time: 10:53:45
~l54262145:Trying to set 'i'...
~e:main_button1_click (java line: 366)
~e:java.lang.NumberFormatException: For input string: "fdgdfg"
~e: at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
~e: at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
~e: at java.lang.Double.parseDouble(Double.java:538)
~e: at b4a.example.main._button1_click(main.java:366)
~e: at java.lang.reflect.Method.invoke(Native Method)
~e: at anywheresoftware.b4a.BA.raiseEvent2(BA.java:213)
~e: at anywheresoftware.b4a.BA.raiseEvent2(BA.java:197)
~e: at anywheresoftware.b4a.BA.raiseEvent(BA.java:193)
~e: at anywheresoftware.b4a.objects.ViewWrapper$1.onClick(ViewWrapper.java:80)
~e: at android.view.View.performClick(View.java:7288)
~e: at android.view.View.performClickInternal(View.java:7258)
~e: at android.view.View.access$4000(View.java:808)
~e: at android.view.View$PerformClick.run(View.java:28019)
~e: at android.os.Handler.handleCallback(Handler.java:883)
~e: at android.os.Handler.dispatchMessage(Handler.java:100)
~e: at android.os.Looper.loop(Looper.java:214)
~e: at android.app.ActivityThread.main(ActivityThread.java:7615)
~e: at java.lang.reflect.Method.invoke(Native Method)
~e: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
~e: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)
java.lang.NumberFormatException: For input string: "fdgdfg"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:538)
at b4a.example.main._button1_click(main.java:366)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:213)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:197)
at anywheresoftware.b4a.BA.raiseEvent(BA.java:193)
at anywheresoftware.b4a.objects.ViewWrapper$1.onClick(ViewWrapper.java:80)
at android.view.View.performClick(View.java:7288)
at android.view.View.performClickInternal(View.java:7258)
at android.view.View.access$4000(View.java:808)
at android.view.View$PerformClick.run(View.java:28019)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7615)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)

==========================
java.lang.NumberFormatException: For input string: "fdgdfg"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:538)
at b4a.example.main._button1_click(main.java:366)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:213)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:197)
at anywheresoftware.b4a.BA.raiseEvent(BA.java:193)
at anywheresoftware.b4a.objects.ViewWrapper$1.onClick(ViewWrapper.java:80)
at android.view.View.performClick(View.java:7288)
at android.view.View.performClickInternal(View.java:7258)
at android.view.View.access$4000(View.java:808)
at android.view.View$PerformClick.run(View.java:28019)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7615)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)

But all the info from previous run is still there. How to start the app with clean empty log?
 

AnandGupta

Expert
Licensed User
Longtime User
This is normal as you will find in forum search.

We put a log line as logcolor("******...
Or something like that to differentiate the new start.

Regards

Anand
 
Upvote 0

Alex_197

Well-Known Member
Licensed User
Longtime User
If you use usb, you may click 'clear' in ide.
If b4a-bridge, it still shows from phone, AFAIK

Regards,

Anand
No, I mean in release mode. My idea is to collect and send by email the log info on try catch. If the exception is trapped I want to know what the used have done before the error occurred. That's why I want the log to be empty when the app get started.
 
Upvote 0

MikeSW17

Active Member
Licensed User
Looks like you can Trim the Log file so you only get 'recent' data.

From: Send Log by email example:

B4X:
Private Sub logcat_LogCatData (Buffer() As Byte, Length As Int)
    logs.Append(BytesToString(Buffer, 0, Length, "utf8"))
    If logs.Length > 5000 Then
        logs.Remove(0, logs.Length - 4000)
    End If
End Sub
 
Upvote 0
Top