I write for me, and share.
Add functionality to a log and logcolor functions.
Easy to implement.
Source Code for enhance or fix.
CSBuilder, TextWriter & TextReader implementation.
1 line, create a log to ide, a tostamessage and write to logfile.
2 line, colorlog and write to file.
3 line, a simple logo to ide and file
next read the all-historical log to edittext and ListView
Other functions are in the code (like clear)
With this function you have an ever log of the app.
Simplify lines merging toast and log.
Can do/undo with search replace.
logcolor <=> logger.tlogcolor
TO-DO - IDEAS
Convert to a class and then to a library
check size file.log and reduce when raise this level
send log by mail.
and ...............more things.
Full attach file.
Add functionality to a log and logcolor functions.
Easy to implement.
Source Code for enhance or fix.
CSBuilder, TextWriter & TextReader implementation.
B4X:
' log on ide & toast & permanent file
logger.tlogcolor("HOLA: IS A TOAST AND LOG", Colors.Cyan)
logger.wlogcolor("SIMPLE LOG", Colors.Green)
logger.wlog("------Default Color-------------")
'output to screen
EditText1.Text=logger.ReadLog
logger.ReadList(ListView1)
2 line, colorlog and write to file.
3 line, a simple logo to ide and file
next read the all-historical log to edittext and ListView
Other functions are in the code (like clear)
With this function you have an ever log of the app.
Simplify lines merging toast and log.
Can do/undo with search replace.
logcolor <=> logger.tlogcolor
TO-DO - IDEAS
Convert to a class and then to a library
check size file.log and reduce when raise this level
send log by mail.
and ...............more things.
B4X:
' EXAMPLES LOGGING
' logger.wlogcolor("ERROR 1 MAIN - LINE 356", Colors.Red)
' logger.tlogcolor("TOTAL REGISTROS:" & (Cursor1.RowCount - 1),Colors.Green)
' logger.wlog("------Default Color-------------")
' EXAMPLES READ AND VIEW
' FOR TEXT AND LIST
'(*) logtext.Text=logger.ReadLog
'(*) logger.ReadList(ListView1)
' EXAMPLES WRITE LOGS
'(*) logger.writelogfile("TEXT TO SAVE", Colors.Red,"YOURFILE.ooo")
'(*) logger.delete_file("wildcards")
'(*) MOTHER FUNCTIONS, THE OTHER USES THIS.
Sub Process_Globals
'default file for simplicity
Dim file2log= "activity.log" As String
End Sub
' same as logcolor save to file
' MASTER FUNCTION: UNIQUE FUNCTION THAT WRITE THE LOGSFILE--------------------------------------------------
public Sub wlogcolor(TEXT As String, c As Int)
writelogfile(TEXT , c ,file2log)
LogColor(TEXT,c)
End Sub
'CHILDS FUNCTION -------------------------------------------------------------------------------------------
' same as logcolor save to file AND TOAST MESSAGE
public Sub tlogcolor(TEXT As String,colo As Int)
Dim cbs As CSBuilder
wlogcolor(TEXT,colo)
cbs.Initialize.Color(colo).Append(TEXT).PopAll
ToastMessageShow(cbs,True)
End Sub
' same as log save to file
public Sub wlog(TEXT As String)
wlogcolor(TEXT,Colors.LightGray)
End Sub
' same but create custom color for ERRORS
'FILE FUNCTION -------------------------------------------------------------------------------------------
'READ FUNCTION -------------------------------------------------------------------------------------------
' read the log and return CSBUILDER ( Use with textedit multiline )
' Use:
' Dim ed As EditText
' ed.TEXT=ReadLog
public Sub ReadLog As CSBuilder
Return ReadLogFile(file2log)
End Sub
public Sub ReadLogFile(logfile As String) As CSBuilder
Private tr As TextReader
Private csb As CSBuilder
Private oneline,s As String
Dim c As Int
csb.Initialize
tr.Initialize(File.OpenInput(File.DirDefaultExternal, logfile))
Dim lista = tr.ReadList As List
Dim i=lista.Size-1 As Int
Do While i >= 0
oneline=lista.Get(i)
i=i-1
If oneline.Contains("#") Then
s = oneline.SubString2(oneline.IndexOf("#")+1,oneline.Length)
c = oneline.SubString2(0,oneline.IndexOf("#"))
csb.Color(c).Append(s).Append(CRLF).Pop
End If
'else ignore (can rebuild to plain txt)
Loop
csb.PopAll
Return csb
End Sub
' read the log and return CSBUILDER ( Use with listview)
'USE:
' dim l as listview
' Readlist(l)
public Sub Readlist(l As ListView) As CSBuilder
Return FillList(file2log,l)
End Sub
'Same with custom file.log
public Sub FillList(logfile As String,l As ListView) As CSBuilder
Private tr As TextReader
Private csb As CSBuilder
Private oneline,s As String
Dim c As Int
csb.Initialize
tr.Initialize(File.OpenInput(File.DirDefaultExternal, logfile))
Dim lista = tr.ReadList As List
Dim i=lista.Size-1 As Int
Do While i >= 0
oneline=lista.Get(i)
i=i-1
If oneline.Contains("#") Then
s = oneline.SubString2(oneline.IndexOf("#")+1,oneline.Length)
c = oneline.SubString2(0,oneline.IndexOf("#"))
csb.Initialize
l.AddSingleLine(csb.Color(c).Append(s).Pop) ' diferent here
End If
Loop
csb.PopAll
Return csb
End Sub
'FILE FUNCTION -------------------------------------------------------------------------------------------
'WRITE AND DELETE FUNCTION -------------------------------------------------------------------------------------------
public Sub writelogfile(TEXT As String, c As Int,logfile As String)
Private tx As TextWriter
tx.Initialize(File.OpenOutput(File.DirDefaultExternal, logfile, True))
tx.WriteLine(c&"#"&TEXT&Chr(10)&Chr(13))
tx.Close
End Sub
public Sub delete_file( comodin As String)
Dim myfile As String
Dim allsdcard As List
allsdcard.Initialize
allsdcard.AddAll(File.ListFiles(File.DirDefaultExternal))
For i= allsdcard.Size-1 To 0 Step -1
myfile = allsdcard.Get(i)
If myfile.Contains(comodin) Then
File.delete(File.DirDefaultExternal,myfile )
End If
Next
End Sub
public Sub clean
Dim myfile As String
Dim allsdcard As List
allsdcard.Initialize
allsdcard.AddAll(File.ListFiles(File.DirDefaultExternal))
For i= allsdcard.Size-1 To 0 Step -1
myfile = allsdcard.Get(i)
Log("-----------"&myfile)
If myfile.Contains("activity.log") Then ' SAME AS file2log definition
File.delete(File.DirDefaultExternal,myfile )
End If
Next
're-create one
wlog("")
End Sub
Full attach file.