Jump to content
Sign in to follow this  
Danyfirex

Loga - A logging Library

Recommended Posts

Hello guys.  It's been awhile since I shared something. So today I want to share my last project.

What's Loga?

Loga is a simple logging library to keep track of code with an integrated console.

Features.

  • Common log levels.
  • Integrated console.
  • Multiple instances.
  • Custom color and font for each instance log level.
  • Define output format with macros.
  • Conditional and occasional Logging.
  • Easy to use.

Basic Usage:

#include "..\Loga.au3"


;This are some of the default settings:
;Default log level $LOGA_LEVEL_TRACE
;output format: {Symbol}{LogIndex} {LevelName} {LongDateTime} {Message}
;Log to File is enabled.
;Log file name format: YYYYMMDDHHMM-Loga-InstanceIndex.log
;Custom Console is disabled by default.
;By default log to STDOUT.

_LogaTrace("I'm Trace")
_LogaDebug("I'm Debug")
_LogaInfo("I'm Info")
_LogaWarn("I'm Warn")
_LogaError("I'm Error")
_LogaFatal("I'm Fatal")

 

More examples here.

 

Check Loga on GitHub.

 

Loga Latest Release v1.0.2.

 

Saludos

 

 

 

 

Edited by Danyfirex
Update

Share this post


Link to post
Share on other sites

Few feature request:

1.

_LogaTrace("I'm Trace")
_LogaDebug("I'm Debug")
_LogaInfo("I'm Info")
SetError(10,20)
_LogaWarn("I'm Warn")
_LogaError("I'm Error")
_LogaFatal("I'm Fatal")

function should log @error and @extended 

2.

_LogaTrace("I'm Trace")
_LogaDebug("I'm Debug")
_LogaInfo("I'm Info")
SetError(10,20)
_LogaWarn("I'm Warn")
If @error Then MsgBox($MB_ICONERROR, 'TEST', '@error = ' & @error & @CRLF & '@extended = ' & @extended)
_LogaError("I'm Error")
_LogaFatal("I'm Fatal")

Function should be transparent for @error and @extended

 

Edited by mLipok

Signature beginning:   Wondering who uses AutoIT and what it can be used for ?
* GHAPI UDF - modest beginning - communication with GitHub REST API Forum Rules *
ADO.au3 UDF     POP3.au3 UDF     XML.au3 UDF    How to use IE.au3  UDF with  AutoIt v3.3.14.x  for other useful stuff click the following button

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST APIErrorLog.au3 UDF - A logging Library *

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskScheduler

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2019-10-01

Share this post


Link to post
Share on other sites

If last function return @error or @extended 

_LastFunction() ; SetError(10,20)
_LogaWarn("I'm Warn")
If @error Then MsgBox($MB_ICONERROR, 'TEST', '@error = ' & @error & @CRLF & '@extended = ' & @extended)


Then _Loga* function should store this values report them to log and restore on exit.

 


Signature beginning:   Wondering who uses AutoIT and what it can be used for ?
* GHAPI UDF - modest beginning - communication with GitHub REST API Forum Rules *
ADO.au3 UDF     POP3.au3 UDF     XML.au3 UDF    How to use IE.au3  UDF with  AutoIt v3.3.14.x  for other useful stuff click the following button

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST APIErrorLog.au3 UDF - A logging Library *

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskScheduler

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2019-10-01

Share this post


Link to post
Share on other sites

btw I really like your "09 - Custom GUI Console Color And Font .au3"

I must look closer to your solution and check it how you create this colors on this output.
I have similar solution in my "FRAMEWORK" for all of my projects, but I've never started to implement coloring - which was always on my TODO list.

 

image.png.45a0bce61cb596bf45cd764a1f0054f1.png

 

image.png.1bacb1b4f7c2ce6dad8c89c6d00097a6.png

 

EDIT: and I must to check how you use different font size - very interesting solution

 

Edited by mLipok

Signature beginning:   Wondering who uses AutoIT and what it can be used for ?
* GHAPI UDF - modest beginning - communication with GitHub REST API Forum Rules *
ADO.au3 UDF     POP3.au3 UDF     XML.au3 UDF    How to use IE.au3  UDF with  AutoIt v3.3.14.x  for other useful stuff click the following button

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST APIErrorLog.au3 UDF - A logging Library *

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskScheduler

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2019-10-01

Share this post


Link to post
Share on other sites

Share this post


Link to post
Share on other sites

and one remarks

Please try to not use Local keyword in global scope - in your examples .. as this is not good practices, and fires many Warrnings by Au3Check in console.

Quote

"C:\Users\Szef\Downloads\Loga-1.0.0\Loga-1.0.0\Examples\09 - Custom GUI Console Color And Font.au3"(4,7) : warning: 'Local' specifier in global scope.
Local $sSettings1
~~~~~~^
"C:\Users\Szef\Downloads\Loga-1.0.0\Loga-1.0.0\Examples\09 - Custom GUI Console Color And Font.au3"(8,7) : warning: 'Local' specifier in global scope.
Local $hLoga1
~~~~~~^
"C:\Users\Szef\Downloads\Loga-1.0.0\Loga-1.0.0\Examples\09 - Custom GUI Console Color And Font.au3"(17,7) : warning: 'Local' specifier in global scope.
Local $sSettings2
~~~~~~^
"C:\Users\Szef\Downloads\Loga-1.0.0\Loga-1.0.0\Examples\09 - Custom GUI Console Color And Font.au3"(22,7) : warning: 'Local' specifier in global scope.
Local $hLoga2
~~~~~~^
C:\Users\Szef\Downloads\Loga-1.0.0\Loga-1.0.0\Examples\09 - Custom GUI Console Color And Font.au3 - 0 error(s), 4 warning(s)
->15:40:29 AU3Check ended. Press F4 to jump to next error.rc:1
 

 


Signature beginning:   Wondering who uses AutoIT and what it can be used for ?
* GHAPI UDF - modest beginning - communication with GitHub REST API Forum Rules *
ADO.au3 UDF     POP3.au3 UDF     XML.au3 UDF    How to use IE.au3  UDF with  AutoIt v3.3.14.x  for other useful stuff click the following button

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST APIErrorLog.au3 UDF - A logging Library *

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskScheduler

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2019-10-01

Share this post


Link to post
Share on other sites

Share this post


Link to post
Share on other sites

Share this post


Link to post
Share on other sites

i will be testing it for sure. I like how log4a can be configured to automatically generate a LOG file if compiled, else it logs to the Scite console


My resources are limited. You must ask the right questions

 

Share this post


Link to post
Share on other sites
On 26.09.2018 at 3:34 PM, Danyfirex said:

Understood. It will be added as soon as possible.

take a look here:

 

Edited by mLipok

Signature beginning:   Wondering who uses AutoIT and what it can be used for ?
* GHAPI UDF - modest beginning - communication with GitHub REST API Forum Rules *
ADO.au3 UDF     POP3.au3 UDF     XML.au3 UDF    How to use IE.au3  UDF with  AutoIt v3.3.14.x  for other useful stuff click the following button

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST APIErrorLog.au3 UDF - A logging Library *

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskScheduler

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2019-10-01

Share this post


Link to post
Share on other sites

Share this post


Link to post
Share on other sites

Using:

#include "..\Loga.au3"
SetError(1,2)
_LogaTrace("I'm Trace")
_LogaDebug("I'm Debug")
_LogaInfo("I'm Info")
_LogaWarn("I'm Warn")
_LogaError("I'm Error")
_LogaFatal("I'm Fatal")
If @error Then MsgBox($MB_ICONERROR, 'TEST', '@error = ' & @error & @CRLF & '@extended = ' & @extended)

I get MsgBox but  in console I get:

Quote

>0000000001 [Trace] 28\09\2018 13:37:18 I'm Trace
>0000000002 [Debug] 28\09\2018 13:37:18 I'm Debug
+0000000003 [Info]  28\09\2018 13:37:18 I'm Info
-0000000004 [Warn]  28\09\2018 13:37:18 I'm Warn
!0000000005 [Error] 28\09\2018 13:37:18 I'm Error
!0000000006 [Fatal] 28\09\2018 13:37:18 I'm Fatal

Do you plan to implement reporting to log about @error and @extended ?

 


Signature beginning:   Wondering who uses AutoIT and what it can be used for ?
* GHAPI UDF - modest beginning - communication with GitHub REST API Forum Rules *
ADO.au3 UDF     POP3.au3 UDF     XML.au3 UDF    How to use IE.au3  UDF with  AutoIt v3.3.14.x  for other useful stuff click the following button

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST APIErrorLog.au3 UDF - A logging Library *

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskScheduler

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2019-10-01

Share this post


Link to post
Share on other sites

I'll add a setting to enable/disable that feature for the next release. 

 

Saludos

Share this post


Link to post
Share on other sites

Signature beginning:   Wondering who uses AutoIT and what it can be used for ?
* GHAPI UDF - modest beginning - communication with GitHub REST API Forum Rules *
ADO.au3 UDF     POP3.au3 UDF     XML.au3 UDF    How to use IE.au3  UDF with  AutoIt v3.3.14.x  for other useful stuff click the following button

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST APIErrorLog.au3 UDF - A logging Library *

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskScheduler

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2019-10-01

Share this post


Link to post
Share on other sites

@Danyfirex

Keep it up.

Appreciate your effort and share :)


Click here to see my signature:

Spoiler

Thoughts:

  • I will always thank you for the time you spent for me.
    I'm here to ask, and from your response, I'd like to learn.
    By my knowledge, I can help someone else, and "that someone" could help in turn another, and so on.

/*--------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/

ALWAYS GOOD TO READ:

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By Alok_Arora
      Hello Sir, 
      While searching for the solution to my problem, I have just gone through some of your old post. 
      My name is Alok Arora 
      Email id is *snip*
      I am writing a code to store logs for each script I run. This I did by using FileWriteLog function and it is successfully storing logs in txt file. 
      Now, I have to work on to read the log file and if any script has been mistakenly clicked twice in a day script will pop up a message that task already done for the day by verifying entries in the log file. 
      I have the logic for it.. 
      I mean a variable will read the log file and will search for the entry and will perform action if entry found or not. 
      I believe for reading the file I can write a code like
      $i =fileread("logfile.txt")
      Now I am stuck on how to compare the log entry in log file. 
      Can you please help me in this? 
    • By emendelson
      After fifteen years of working in AutoIt, I'm still a beginner, so I have ConsoleWrite() lines all over my scripts to help me find my mistakes. Is it likely that these lines are slowing down my compiled scripts? If so, would it make sense to replace all the ConsoleWrite() lines with
      If Not @Compiled Then ConsoleWrite("data") Or is it better simply to comment out those lines when I have things working correctly?
      I'm not sure there's a clear answer to this question, but I hope someone knows a lot more about it than I do.
    • By rmckay
      Hello,
      I've added ConsoleWrite lines to functions I've created.  The format for the ConsolWrite statements is : (@CRLF & $sPath  &  '('  &  @ScriptLineNumber  &  ') : *** Func _ABC() ***: '  &  @crlf ).  $sPath  is defined as the filepath to the file containing the function - Local $sPath = "C:\Users\Owner\Documents\AutoIt\NT8 Download Replay Data\DownloadReplayFunctions02.au3" 
      Local $sPath = "C:\Users\Owner\Documents\AutoIt\NT8 Download Replay Data\DownloadReplayFunctions02.au3" ConsoleWrite(@CRLF & $sPath & '(' & @ScriptLineNumber & ') : *** Func _oMenuItemHistoricalData() ***: ' & @crlf ) The result is that I can access the functions from the Scite output window when the function is located in another file which is included in the main file.  For some reason Scite adds a line to the code when I switch to the Include file from the output window.

      Why does the line get added to the script and can I stop if from appearing?
      Thanks,
    • By Luigi
      Greetings,
      Is possible build a script to send/receive commands in "Native Messagin" ?

      If you install this extension:
      https://chrome.google.com/webstore/detail/native-messaging-example/mefhabneoickhhbiglkmehhmemefkopf/related
      And this complement:
      https://github.com/Mandar-Shinde/Google-Chrome-Native-Messaging/releases/download/V1.0/GoogleNativeClient.exe

      You have a work example to send / receive messages from Google Chrome's plugin and NativeMessagingApp.exe.

      I found the source NativeMessagingApp.exe's here:
      https://github.com/Mandar-Shinde/Google-Chrome-Native-Messaging
      I try build this script... But not work...
       
      #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Compression=4 #AutoIt3Wrapper_Outfile=C:\Users\Public\GoogleNativeClient\NativeMessagingApp2.exe #AutoIt3Wrapper_UseUpx=y #AutoIt3Wrapper_Change2CUI=y #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #NoTrayIcon #include-once #include <Array.au3> #include <JSMN.au3> ; https://github.com/chechelaky/AutoIt/blob/master/JSMN.au3 #include <Debug.au3> Global $msg = "@empty" Global Const $CLIENT_START = '{"text":"Client Started"}' Global Const $CLIENT_STOP = '{"text":"Client Stopped"}' Global Const $CLIENT_CLICK = '{"text":"Client Click"}' _DebugSetup("NativeMessagingApp2", True, 4, @ScriptDir & "\NativeMessagingApp2.log", True) Global $read, $json, $out = "" If IsArray($CmdLine) Then ;~ $msg = @LF & "Google Chrome Native Messaging App V1" & @LF & @LF & _ ;~ "GPLV3 software distributed under the License is distributed on an ""AS IS"" BASIS" & @LF & _ ;~ "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied." & @LF & _ ;~ "See the License for the specific language governing permissions and" & @LF & _ ;~ "limitations under the License." & @LF & @LF ;~ Local $size = UBound($CmdLine, 1) - 1 ;~ $msg &= "App running with args=" & $size & @LF ;~ For $ii = 0 To $size ;~ $msg &= $ii & " : " & $CmdLine[$ii] & @LF ;~ Next ;~ _DebugOut($msg) EndIf sendMessage($CLIENT_START) While Sleep(10) $read = ConsoleRead() If @error And $out Then _DebugOut("$read...............: " & $out) $json = Jsmn_decode($out) If @error Then _DebugOut("$json...............: @Error") Else _DebugOut("$json...............: @Ok") EndIf If IsObj($json) And $json.Exists("text") Then sendMessage('{"text":"' & $json.Item("text") & '"}') Else sendMessage('{"text":"@Error"}') EndIf $out = "" Else $out &= $read EndIf WEnd Func sendMessage($var) ConsoleWrite($var & @CRLF) _DebugOut("sendMessage===>" & $var) EndFunc ;==>Say  
      Edit the file:
      C:\Users\Public\GoogleNativeClient\com.google.chrome.example.echo-win.json

      And replace:
      "path": "NativeMessagingApp.exe",
      By:
      "path": "NativeMessagingApp2.exe",
      Then plugin call the AutoIt script...

      But is not functional...

       
      About the file mainwindow.cpp, have this function:
      inline QString sendMessage(QString data){ unsigned int len = data.length(); cout.write(reinterpret_cast<const char *>(&len), 4); cout << data.toUtf8().data() << flush; return ""; } How re-write this to AutoIt?
      How execute a flush?



      Best regards.
    • By t0nZ
      About logs, it is a few years that I drag a couple of functions between one script and another, so finally I decided to write down my first UDF to optimize my scripts.
      Main focus is to keep it simple, so you have just to include _gollog.au3 and call:
      GOLLOG("a line of text"), and start logging.
      If your script is without GUI the log will be only written to disk, if you have a GUI you can initialize an edit control :
      GOLLOG_INI($guititle, $left, $top, $width, $height)
      and GOLLOG() will write your log both in an auto generated EDIT control in your $guititle GUI and disk; also GOLLOG_INI() will AUTO-create a GUI (if it doesn't exist $guititle) with a screen log if you want !
      The majority of options (colors, fonts, position of logs ) are default-defined, but you can initialize them with GOLLOG_INI(), is all documented in the UDF and partially in the example.
      There is also a function:
      GOLzipLOG($n)
      to ZIP logs older than $n months, based on the UDF (also included in attachments) _zip.udf by @wraithdu
      the UDF code:
      #include-once #include <File.au3> #include <_zip.au3> ; #INDEX# ======================================================================================================================= ; Title .........: GOLLOG ; AutoIt Version : 3.3.14.0++ ; Language ......: English ; Description ...: Smart logging system ; Author(s) .....: NSC ; =============================================================================================================================== ; ------------------------------------------------------------------------------ ; This software is provided 'as-is', without any express or ; implied warranty. In no event will the authors be held liable for any ; damages arising from the use of this software. ; #VARIABLES# =================================================================================================================== ; internal use Global $gollogcount = 0 ;total number of chars in editbox Global $lastlog = "sicrlf" ;carriage return default yes "sicrlf" or no onetime "nocrlf", see func GOLLOG Global $cachelog = "" ;to count number of chars on single line Global $Gollogedit = "" ;name of edit control ; to initialize with func _GOLLOG_INI Global $guititle = "" ;name of gui for checkin' if activate on screen loggin' Global $geleft = 0 ;left coord edit box Global $getop = 0 ;top coord edit box Global $gewidth = 0 ;width of edit box Global $geheight = 0 ;height of edit box ; optionally to initialize with func _GOLLOG_INI, otherwise default values used Global $GEfontcolor = "0x00FF00" Global $GEbkcolor = "0x000000" Global $GEfont = "consolas" Global $GEfontsize = 8 Global $gefontweight = 800 Global $logpath = @ScriptDir & "\logs" Global $logfile = $logpath & "\" & StringTrimRight(@ScriptName, 4) & "_LOG_" ; =============================================================================================================================== ; #CURRENT# ===================================================================================================================== ; GOLLOG_INI ; GOLLOG ; GOLzipLOG ; =============================================================================================================================== ; #INTERNAL_USE_ONLY#============================================================================================================ ; cleanedit ; =============================================================================================================================== #comments-start Changelog: ; V.2.31 2014-2015-2016-2018 only functions up to this version ; V.3.00 2018/07/30 first attempt to convert to UDF ; V.3.02 2018/08/03 bugfix in log folder creation ideas to do don't repeat timestamps, at least on GUI , or highlight only time changes in line option to display also as balloon text one or more lines in line option to write only on screen and not on disk in line option to change font size / color only on one line #comments-end ; #FUNCTION# ==================================================================================================================== ; Name...........: GOLLOG_INI ; Description ...: Initialize variables for GOLLOG edit, and creates the GOLLOG EDIT BOX ; if the Gui window is not existant ($guititle) also creates the windows gui; in this case, the parameters of ; coords and dimensions are used for the new gui window, but are coords and dimensions are inverted ; due to different parameters order in GUICreate and GUICtrlCreateEdit ; if not called gollog only write to disk with default setting (because $guititle = "") ; if called with &guititle = "", the edit box related variables are ignored but you can still define values for the log file ; Syntax.........: GOLLOG_INI ($guititle, $geleft, $getop, $gewidth, $geheight[, $gefontcolor [, $gebkcolor [, $gefont [, $gefontsize [, $gefontweight [, $logfile [, $months2NOTzip ]]]]]]] ) ; Parameters ....: $guititle - name of gui ; $geleft - left coord of the edit (for windows gui: width) ; $getop - top coord of the edit (for windows gui: height) ; $gewidth - width of the edit (for windows gui: left coord) ; $geheight - height of the edit (for windows gui: top coord) ; $gefontcolor - optional color of font in edit control ; $gebkcolor - optional color of background of edit control ; $gefont - optional font type ; $gefontsize - optional size of font ; $gefontweight - optional weight of font ; $logfile - optional complete path\name of the logfile (datetime will be still added to the name) ; otherwise default path\name will be used ; Return values .: Success - Returns "OK" ; Failure - error message, sets @error = 1 ; set @extended ; |1 - left cooord missing ; |2 - top coord missing ; |3 - widht missing ; |4 - height missing ; Author ........: NSC ; Modified.......: ; Remarks .......: ; Related .......: GOLLOG ; Link ..........: ; Example .......: No ; =============================================================================================================================== Func GOLLOG_INI($Fguititle, $Fgeleft, $Fgetop, $Fgewidth, $Fgeheight, $FGEfontcolor = "0x00FF00", $FGEbkcolor = "0x000000", $FGEfont = "consolas", $FGEfontsize = 8, $Fgefontweight = 800, $Flogfile = @ScriptDir & "\logs\" & StringTrimRight(@ScriptName, 4) & "_LOG_") $guititle = $Fguititle $geleft = $Fgeleft $getop = $Fgetop $gewidth = $Fgewidth $geheight = $Fgeheight ; optionally to initialize with func _GOLLOG_INI, otherwise default values used $GEfontcolor = $FGEfontcolor $GEbkcolor = $FGEbkcolor $GEfont = $FGEfont $GEfontsize = $FGEfontsize $gefontweight = $Fgefontweight $logfile = $Flogfile If $guititle = "" Then Return "paramter GUI title missing" EndIf If $geleft = "" Then Return SetError(1, 1, "edit: left cooord missing") If $getop = "" Then Return SetError(1, 2, "edit: top coord missing") If $gewidth = "" Then Return SetError(1, 3, "edit: widht missing") If $geheight = "" Then Return SetError(1, 4, "edit: height missing") If Not WinExists($guititle) Then If $geleft = "" Then Return SetError(1, 1, "GUI: width missing") If $getop = "" Then Return SetError(1, 2, "GUI: heigh missing") If $gewidth = "" Then Return SetError(1, 3, "GUI: left cooord missing") If $geheight = "" Then Return SetError(1, 4, "GUI: top coord missing") $test = GUICreate($guititle, $geleft, $getop, $gewidth, $geheight) ; modify parameters to fit edit in "auto" generated GUI $gewidth = $geleft - 10 $geheight = $getop - 10 $getop = 5 $geleft = 5 cleanedit() GUISetState(@SW_SHOW) Else If $geleft = "" Then Return SetError(1, 1, "left cooord missing") If $getop = "" Then Return SetError(1, 2, "top coord missing") If $gewidth = "" Then Return SetError(1, 3, "widht missing") If $geheight = "" Then Return SetError(1, 4, "height missing") cleanedit() EndIf Return "OK" EndFunc ;==>GOLLOG_INI ; #FUNCTION# ==================================================================================================================== ; Name...........: GOLLOG ; Description ...: writes one line of log ; if there isn't edit control, the line is only written on the log file ; if there is also an associated edit control, it writes both on screen and on file ; Syntax.........: GOLLOG(ByRef $logtext) ; Parameters ....: $logtext - a string of text to be written down on disk and on screen ; if $logtext containg at the end a substring like "|nocrlf50" that line does not CR ("noCRLF") ; except if the max specified number of chars on the line ("50") is excedeed ; next call of Gollog() without substring "|nocrlf50" restores auto Carriage Return behaviour ; Return values .: n/a ; Author ........: NSC ; Modified.......: ; Remarks .......: ; Related .......: GOLLOG_INI,cleanedit ; Link ..........: ; Example .......: no ; =============================================================================================================================== Func GOLLOG($logtext) If Not FileExists($logpath) Then DirCreate($logpath) ; pre-UDF this was in the scripts EndIf $gollogcount += StringLen($logtext) Local $logfiletimerange = @YEAR & @MON Local $linelimit = StringRight($logtext, 2) If StringRight($logtext, 9) = "|nocrlf" & $linelimit Then $logtext = StringTrimRight($logtext, 9) Local $acapo = "no" Else Local $acapo = "si" $gollogcount += 4 If $gollogcount > 13000 And $guititle <> "" Then ;Sleep(3000) cleanedit() ; MsgBox(64, "debug", $conta) $gollogcount = 0 EndIf EndIf If $acapo = "no" And (StringLen($cachelog) <= $linelimit) Then ;pearl perla no CRLF if > linelimt If $lastlog = "nocrlf" Then If WinExists($guititle) Then ; no GUI no on screen log GUICtrlSetData($Gollogedit, $logtext, 1) EndIf Else If WinExists($guititle) Then ; no GUI no on screen log GUICtrlSetData($Gollogedit, @MDAY & "/" & @MON & "_" & @HOUR & ":" & @MIN & " " & $logtext, 1) EndIf EndIf $cachelog = $cachelog & $logtext $lastlog = "nocrlf" Else If $lastlog = "nocrlf" Then If WinExists($guititle) Then ; no GUI no on screen log GUICtrlSetData($Gollogedit, $logtext & @CRLF, 1) EndIf $cachelog = $cachelog & $logtext _FileWriteLog($logfile & $logfiletimerange & ".txt", $cachelog) $cachelog = "" Else If WinExists($guititle) Then ; no GUI no on screen log GUICtrlSetData($Gollogedit, @MDAY & "/" & @MON & "_" & @HOUR & ":" & @MIN & " " & $logtext & @CRLF, 1) EndIf _FileWriteLog($logfile & $logfiletimerange & ".txt", $logtext) EndIf $lastlog = "sicrlf" EndIf EndFunc ;==>GOLLOG ; #FUNCTION# ==================================================================================================================== ; Name...........: GOLzipLOG ; Description ...: takes all log files older than specified number of months, and zip these in a unique zip file, in the same folder ; Syntax.........: GOLLOG(ByRef $months2notZIP) ; Parameters ....: $months2notZIP - number of months (age of log files) to not zip ; Return values .: n/a ; Author ........: NSC ; Modified.......: ; Remarks .......: ; Related .......: ; Link ..........: ; Example .......: no ; =============================================================================================================================== Func GOLzipLOG($months2NOTzip) ; zipping old log leaving unzipped only n months GOLLOG("ZIPping log files older than " & $months2NOTzip & " months") Local $hSearch = FileFindFirstFile($logfile & "*.txt") ; searching for logs Local $logconta = 0 Local $logfiletimerange = @YEAR & @MON While 1 ; single file processing cycle Local $sFileName = FileFindNextFile($hSearch) ; If there is no more file matching the search. If @error Then ExitLoop Local $stringtime = StringTrimRight(StringRight($sFileName, 10), 4) ;obtaining year-month like 201609 If $logfiletimerange - $stringtime > $months2NOTzip Then ;zipping If Not FileExists($logfile & ".zip") Then If Not _Zip_Create($logfile & ".zip", 1) Then GOLLOG("Error " & @error & " creating " & $logfile & ".zip") Else GOLLOG("Created new log archive: " & $logfile & ".zip") EndIf Else GOLLOG("adding to archive: " & $logfile & ".zip") EndIf If Not _zip_additem($logfile & ".zip", $logpath & $sFileName) Then GOLLOG("Error " & @error & " zipping: " & $logpath & $sFileName) Else GOLLOG("Added: " & $logpath & $sFileName) $logconta += 1 If Not FileDelete($logpath & $sFileName) Then GOLLOG("ERROR - Unable to DELETE log file " & $logpath & $sFileName) EndIf EndIf EndIf WEnd GOLLOG("Finished = " & $logconta & " log files zipped") EndFunc ;==>GOLzipLOG ; #INTERNAL_USE_ONLY#============================================================================================================ ; Name...........: cleanedit ; Description ...: create the edit box delete edit box and recreate it with same parameters ; when the edit box is "full" of chars delete edit box and recreate it with same parameters ; parameters are global variables specified in GOLLOG_INI ; Syntax.........: cleanedit() ; Parameters ....: n/a ; Return values .: n/a ; Author ........: NSC ; Modified.......: ; Remarks .......: ; Related .......: GOLLOG_INI ; Link ..........: ; Example .......: no ; =============================================================================================================================== Func cleanedit() ; cleaning of edit every n° lines (in program put if $nlines > xlines then this function) GUICtrlDelete($Gollogedit) $Gollogedit = GUICtrlCreateEdit("", $geleft, $getop, $gewidth, $geheight) ;, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN, $WS_BORDER)) GUICtrlSetData(-1, "" & @CRLF) GUICtrlSetFont(-1, $GEfontsize, $gefontweight, 0, $GEfont) GUICtrlSetColor(-1, $GEfontcolor) GUICtrlSetBkColor(-1, $GEbkcolor) GUICtrlSetCursor(-1, 3) EndFunc ;==>cleanedit the example code:
      ; *** GOLLOG UDF test script *** ; (C) NSC 2018 #include <_GOLLOG.au3> MsgBox(64,"GOLLOG example 1","no GUI, only write on disk, check the log file in @scriptdir" & @CR & "note: no initialization GOLLOG_INI() is required!") Gollog("this is the first line of log only in the file") MsgBox(64,"GOLLOG example 2","log and edit on pre-existant GUI") $mygui = "edit on existant gui" Guicreate($mygui, 600,300,300,300) GUISetState(@SW_SHOW) gollog_ini($mygui,5,5,590,290) ;basic initialization, no aestetic options Gollog("this is the first line |nocrlf50") ; no carriage return with -> |nocrlf50 Gollog("on the pre-existant GUI") ; auto CR restored $a = 0 while $a < 50 GOLLOG("Example 2 line:" & $a) $a +=1 sleep(100) wend GUIDelete($mygui) MsgBox(64,"GOLLOG example 3","log and edit on 'auto' generated GUI") $mygui = "auto generated GUI" gollog_ini($mygui,600,300,200,200,"0x0033cc","0xffff00","courier") ; initialization with colors and font choice, more options see the UDF Gollog("this is the first line |nocrlf50") Gollog("on the 'auto' generated GUI") $a = 0 while $a < 50 GOLLOG("Example 3 line:" & $a) $a +=1 sleep(100) wend MsgBox(64,"GOLLOG example 4","auto re-creation of edit") ; recreate edit before it is "full" Gollog("to recreation of edit control") while $a < 1500 GOLLOG("Example 4 line:" & $a) $a +=1 wend  
      Some options are a bit weird, because I kept retro-compatibility with all my scripts, removing functions and adding the UDF...
      Greetings to all of you.
       
       
      GOLLOG_UDF_TEST.au3
      _Zip.au3
      _GOLLOG.au3
×
×
  • Create New...