The log is used to display messages to the user. The message can be of one of three types:
informational (“Getting started”, “Getting started”, “Successfully created an account”, etc.)
warning (any non-critical errors in the template)
erroneous (when it is necessary to inform the user that there has been a serious error in the work that needs to be paid attention to).
Among other things, these three types of messages differ in icons:
Also, starting from ZennoPoster 22.214.171.124, messages can be assigned a background color
Messages are output to the log using the Notificationaction .
What is it used for?
Let's say that you have created a template that takes about 8 minutes to run once. You don't log at all. You run the template and it works great for one execution, two, three, five, ten. But on the 11th execution, the pattern “hangs” - it does not succeed, but it does not exit with an error, and so on for 10, 20, 30 minutes. In such a situation, you have to forcibly terminate the program and restart the template, hoping that this situation will never happen again.
On the other hand, you can add the output of messages to the log to the template so that you can clearly see at what stage the execution is now. And if the template hangs somewhere, then according to the log we can understand in what, approximately, place the error.
If it seems to you that too many messages are being written to the ZennoPoster log, and you would not want to completely delete actions, you can make them appear only in ProjectMaker. To do this, in the Action Notificationyou need to uncheck the "Show in ZennoPoster" checkbox.
How to work with a window?
Enabling the log window
To enable it, click on the Window item in the top menu and select the Log item :
There are cases when the log window is not displayed, although there is a checkbox next to it in the settings (as shown in the screenshot above), indicating that it is enabled. If, after several attempts to enable it, it still does not appear, then you can perform a general reset of the windows settings in ProjectMaker.
ATTENTION! The steps described below will reset the window settings, in other words, if you have customized the program interface for yourself by arranging its windows in a way convenient for you, then all these settings will be deleted and the default value will be set.
Go to the settings (Edit-Settings), select the Debug tab and at the very bottom of the window look for the Reset Panels button.After clicking this button and restarting ProjectMaker, all window settings will be reset, but enabling the log window should work correctly (this method can also be used in case of problems with displaying other program windows).
Appearance (Standard log)
Message display window
First, the icon corresponding to the type of message is displayed, then the time of the message and the actual text of the message.
Sort by message type and color
Using the buttons in this section, you can filter the displayed messages by their type and/or color.
If this option is enabled, the log window will automatically scroll, thus always showing the most recent message.
If the message is too large, the line-height will be adjusted to fit it completely. If this option is disabled, then only the top line of this entire message will be displayed.
Using this button, you can clear the window from all messages.
Double click on an entry in the log
If you double-click on any entry in the log, the focus of the project will shift to the action that left this entry.
The buttons from the right block of the window are minimized when the height of the log window is reduced. To get access to them, you need to click on the corresponding button.
Log context menu
When you right-click (right-click) on an entry in the log, a context menu will appear
Show action in PM
The project that generated this message will open in ProjectMaker and focus on the action that sent the message.
Copy Action Id
The unique id of the action that sent the message will be saved to the clipboard. Example id is 3e6988d1-9518-4535-a6d2-f0a33420c730. Then you can use this id to search for a project, for more information about searching for a project, see the article Search by project.
When you select this item, the text of the message will be saved to the clipboard.
The features described below are for advanced users.
Log file on computer
PorjectMaker and ZennoPoster additionally save logs on the computer in the directory with the installed program, in the Logs folder. This is how the path to this folder C:\Program Files\ZennoLab\RU\ZennoPosterPro V7\126.96.36.199\Progs\Logs might look like
Splitting by projects and threads
By default, all logs from all templates are written to one file. This behavior can be changed using C# code , which must be placed at the beginning of the template:
// Redirect the log for this template to a separate file.
project.LogOptions.LogFile = @ "D: \ log.txt";
// A log file will be created for each thread.
// The names of the files (in our case, log) will be assigned thread IDs.
project.LogOptions.SplitLogByThread = true;
Extended version of the log
In the program settings, you can enable the Extended log. To do this, in the top menu, click on Edit, then Settings, then select the Debug tab and look for the Extended window for log. For the changes to take effect, you must restart ProjectMaker.
When you enable extended logging in ProjectMaker, it will automatically be enabled in ZennoPoster.
The appearance of the extended log window
The first thing that catches your eye is the appearance of headings:
An unnamed title (in the 5.H.H.X version it was called the Way ).
By clicking on any header, you can sort messages in the log
When you hover the mouse cursor over any of the headings, a filter icon appears.
The type of filter depends on the column in which the click was made:
date filters will be available for the Time column (you can display messages for a specific day, between two dates, before or after a specified date, and many other filters. Or you can create a complex filter with several conditions)
text filters will be available for the Messages column and for the Nameless one .
Equals - String equal to filter (exact match)
Does Not Equal - NOT equal to filter
Begins With - Starts with ...
Ends With - Ends With ...
Contains - Contains
Does Not Contain - Does Not Contain
Is Blank - The line is empty
Is Not Blank - NOT an empty string
Custom - Composite filter.
Auto filter and filter constructor
Right-clicking on the title will open a context menu with additional functions: grouping by the selected column, hiding columns. selection of width. Among them, we are now more interested in Auto Filter and Filter Designer.
This allows you to quickly create a simple message filter.When activated, an additional line (1) appears under the headings, in which the type of filter is set and you can enter the necessary characters and\or words according to which the displayed messages will be selected. The screenshot below shows the line that appears and a simple filtering is created (2) - only those lines that contain the “o” symbol are displayed (the search is performed by the Message column). Each line, on the left, has an icon, after clicking on which a context menu (3) appears with a choice of the type of filtration. The types of filters and the entered values depend on the type of the column: for the Time column, these are comparison operators (greater than ->, less than - <, equal to - =, etc.) and dates; for Messages - text search (Contains, does not contain, starts with, etc.) plus comparison operators.
Filter Builder - similar to an auto filter, but allows you to create much more complex filtering conditions.
When you click on this button, you can add a new condition, a group of conditions, or completely clear all search conditions. It is also necessary to define a logical connection between the conditions here:
AND - meet ALL conditions
OR - satisfy at least one of the conditions
NOT AND- DO NOT meet ALL conditions
NOT OR - DO NOT satisfy at least one of the conditions
Using this button, you can easily add an additional condition.
The column to which the filter is applied is indicated in blue in square brackets (in the screenshot, in the last condition, empty brackets are the Untitled column. Although it does not have its own name, you can filter by it).
The filter type is displayed in green.
Black text is user input for the filter.
This button makes it easy to remove the filter.
How to write in an unnamed column (and why you might need it)?
Unfortunately, it is impossible to write to this column using the standard Notification action (at the time of this writing, the latest version of the program is 188.8.131.52). To do this, you must use the Custom C# code cube and have minimal knowledge of working with C# code.
There are four methods for displaying messages in the log. - project.SendInfoToLog, project.SendWarningToLog, project.SendErrorToLog (using this method, you can set the color of messages). Each of these methods has an overload (work in the project.SendInfoToLog, project.SendWarningToLog, project.SendErrorToLog methods is identical, so here we will only consider project.SendInfoToLog)
// The first version of the method.
// 1st - the line that will be displayed in the "Message" column
// 2nd - bool, whether it is necessary to display this message in the ZennoPoster log
project.SendInfoToLog ("Message", true);
// Second option:
// 1st - the line that will be displayed in the "Message" column
// 2nd - row, this row will appear in an unnamed column.
// 3rd - bool, whether it is necessary to display this message in the ZennoPoster log
project.SendInfoToLog ("Message", "Way", true);
This is how the call to this code looks like:
Where it can come in handy:
in multithreaded work, you can enter the account name in the Untitled column, and the action that this account is currently performing in Messages . If the need arises, you can either group messages by this column (this is done by right-clicking on the title and selecting the appropriate option), or set up a filter.
it may be necessary to write large templates that execute many functions in one pass, for example - registration, filling out a profile, searching for a product, parsing and processing goods, publishing processed data (and all this is one template execution). Each of the described parts can contain many actions. So when logging into the Nameless column, you can write that part of the template in which the execution is now located, and write a specific action in Messages .