It is currently April 18th, 2024, 5:51 am

[Suggestion] Advanced Rainmeter logging mode

Report bugs with the Rainmeter application and suggest features.
User avatar
Active Colors
Moderator
Posts: 1251
Joined: February 16th, 2012, 3:32 am
Location: Berlin, Germany

[Suggestion] Advanced Rainmeter logging mode

Post by Active Colors »

What I am waiting most in the 4.0 is an advanced logging system. It should display every action that was performed by a skin. It will be extra good to see a loading sequence of meters, measures, when all bangs were performed. In other words it should display everything what rainmeter loads. With accompanying timestamps.

It will be a very handy tool for debugging big and complex skins.

And of course the window of this tool should be divided into skins. Just like in About > Skins.
User avatar
jsmorley
Developer
Posts: 22629
Joined: April 19th, 2009, 11:02 pm
Location: Fort Hunt, Virginia, USA

Re: [Suggestion] Advanced Rainmeter logging mode

Post by jsmorley »

This is just really unlikely. There isn't one single place were all skin "actions" take place, that is called with some parameters or something, there are hundreds, maybe thousands, of places in Rainmeter that take distinct actions based on the skin, or the measures or the meters or the various bangs or actions on those measures or meters.

This would not only obviously be just a CPU killer while the "debug mode" was on, and fly by at a tremendous rate of speed that would create megabytes of output in seconds, but would take Manhattan Project levels of code changes to even begin to make it work.

Even a moderately complicated skin can take hundreds and hundreds of distinct actions per second. Even if this whole thing were possible, which it really isn't, it would be drinking from a firehose.

You might consider targeted debugging by using the !Log bang in places where you are interested in tracking the order of things, the values being returned and whatever else you want to know.

Code: Select all

[Rainmeter]
Update=3000
OnRefreshAction=[!Log "The skin was just loaded or refrehed"]
OnUpdateAction=[!Log "The skin was just updated"]

[MeasureSeconds]
Measure=Time
Format=%S
OnChangeAction=[!Log "The measure [*MeasureSeconds*] was just updated to the value [MeasureSeconds]"]
DynamicVariables=1

[MeterSeconds]
Meter=String
MeasureName=MeasureSeconds
FontSize=20
FontColor=255,255,255,255
SolidColor=47,47,47,255
Padding=5,5,5,5
AntiAlias=1
OnUpdateAction=[!Log "MeterSeconds was just updated, using the value [MeasureSeconds] from the measure [*MeasureSeconds*]"]
MouseOverAction=[!Log "You just moved your mouse over MeterSeconds"]
DynamicVariables=1
Even this will very quickly create just ridiculous amounts of output in the log... I had to set Update=3000 just to get a decent screen capture.
1.jpg
You do not have the required permissions to view the files attached to this post.
User avatar
jsmorley
Developer
Posts: 22629
Joined: April 19th, 2009, 11:02 pm
Location: Fort Hunt, Virginia, USA

Re: [Suggestion] Advanced Rainmeter logging mode

Post by jsmorley »

Life of a skin: Mind you, this is all once a second...

Code: Select all

On every Update cycle of each skin:
- increase internal skin counter (*same counter that a Calc measure returns for "counter" in a formula)
- if the skin has measures:
   - if the skin has 'net' measures:
      - update interface tables and stats
   - for each measure (order is the same as they appear in the .ini file):
      - update the measure:
         - if measure has dynamic variables and measures update counter is >= to UpdateDivider of the measure:
            - re-read the measures options
         - if paused, do nothing and skip to next measure
         - if disabled:
            - set number value of measure to 0
            - signal if actions that 'state' of measure has changed (so they know to execute)
            - skip to next measure
         - increase measure counter
         - if measure counter is less than UpdateDivider, then skip to next measure
         - update measure's value (each measure does this differently)
         - calculate and keep track of measures average values if needed
         - calculate and keep track of measures median values if needed
         - if necessary, re-read any ifcondition/ifmatch options (in case any condition references itself, you want the latest value)
         - execute any if actions in the this order: IfEqual, IfAbove, IfBelow, IfCondition, and IfMatch
      - if measure updated correctly:
         - execute OnUpdateAction then OnChangeAction if needed
- update the about dialog with new values
- for each meter (order is the same as they appear in the .ini file):
   - update the meter:
      - if meter has dynamic variables and meters update counter is >= to UpdateDivder of the meter:
         - re-read the meters options
      - perform any updates to the meter (every meter is different, most get all the information needed from the measures they are 'bound' to)
      - update any tooltip information
   - if the meter was updated successfully:
      - execute OnUpdateAction if needed
- redraw the skin if needed:
   - create internal drawing objects if needed
   - draw background options (depends on BackgroundMode, could be a image, solid color, etc.) if needed
   - draw bevel options if needed
   - for each meter:
      - apply TransformationMatrix if needed
      - draw meter (each meter has its own rules)
      - reset transform if needed
   - update window settings (transparency, dynamic window size, etc.)
- start/stop any transition timers (FadeIn/Out transparency options)
- execute any OnUpdateAction from the [Rainmeter] section if needed


When are variables evalutated?
Note: We read and store everything from the .ini in key=value string tables because most (all?) options can contain a string that represents some kind of a variable (#Var# or [SectionVar] etc). This includes invalid options because we do not validate when reading the .ini file, only when the skin/measures/meters are created. We keep these string tables separate from the objects they represent in case objects need to be restored to their original values, or we need to substitute variables, etc. This operation is done in the begining when the skin is read. This is important in understanding why a variable can be replaced by another value when needed (usually in the update cycle when using DynamicVariables=1).

Once the skin is read from the .ini file, we start to create skin/measure/meter objects. The object will try to find the option it wants in string tables discussed above. If the option is not found, the object may look for the option within a 'style" (aka MeterStyle). If the option is still not found, a default value is provided. Every option has a default value even if it is an empty string. Once the option has been found and is not an empty string, it expands any environment variables first (ex. %APPDATA%). Environment variables are parsed from the start of the string to the end. Next it looks for any regular variables (#Var#), skipping any escaped variables (#*Var*#). These are also parsed from the start of the string to the end. If the name of the variable does not exist, nothing is replaced for that variable. Next it looks for any section variables (ie. measure names), skipping any escaped variables ([*MeasureName*]). These are also parsed from the start of the string to the end. Nothing is replaced if the name of the measure is invalid. Action options do not evaluate a [SectionVar] until the action is executed (this does not apply to #Vars#).

If object is asking for a numerical value, it looks for a '(' in the first position in the string. If found, it assumes the string represents a formula, and the string is passed to the math parser and parsed - returning the result. That result is then converted to the correct 'type' asked for (integer, float, double, etc.) If that first character is not a '(', then the entire string is just converted to a number of the correct type. The conversion is done by the C runtime library, not our math parser. If any problems are encountered, the default value is returned.

So basically variables are replaced in this order:
Regular Options:
   %Environment%, #Var#, [SectionVar:] (then formulas)

Action Options:
   on reading objects (at first and on DV=1): %Environment%, #Var#
   on execution of action: [SectionVar:], %Mouse% (for click options only)


Substitute is performed when referencing a measure. This happens at different times, but mostly on the update cycle when a meter asks for a measures value. This also happens when a section variable is parsed and replaced. Also, during reading of tool tip options (because of percent replacment). Some meters also explicitly ask for its measure's value for whatever reasons. When IfMatch is executed, it will check for any [SectionVar]'s and will result in Substitute being called. OnChangeAction on a measure will also check a Substitute. Note: IfMatch and OnChangeAction only check for Substitute for measures that support a string value (ie. DiskSpace, Registry, Script, String, Time, Uptime, and some Plugins).
User avatar
Active Colors
Moderator
Posts: 1251
Joined: February 16th, 2012, 3:32 am
Location: Berlin, Germany

Re: [Suggestion] Advanced Rainmeter logging mode

Post by Active Colors »

It could produce less unnecessary info like the updates in your screenshot if it had an option to choose what to display. For instance I don't need to know what happens every update. For me the only valuable information are loading order with skin actions order (like onrefreshaction or other actions that run on skin load/refresh).
Last edited by Active Colors on January 9th, 2016, 6:48 pm, edited 1 time in total.
User avatar
jsmorley
Developer
Posts: 22629
Joined: April 19th, 2009, 11:02 pm
Location: Fort Hunt, Virginia, USA

Re: [Suggestion] Advanced Rainmeter logging mode

Post by jsmorley »

Load order of skins can be had by turning on debug mode in Manage / Settings

Code: Select all

NOTE (13:44:27.229) : Path: C:\Program Files\Rainmeter\
NOTE (13:44:27.231) : IniFile: C:\Users\Jeffrey\AppData\Roaming\Rainmeter\Rainmeter.ini
NOTE (13:44:27.231) : SkinPath: C:\Users\Jeffrey\Documents\Rainmeter\Skins\
DBUG (13:44:27.235) : ------------------------------
DBUG (13:44:27.235) : * EnumDisplayDevices / EnumDisplaySettings API
DBUG (13:44:27.236) : \\.\DISPLAY1
DBUG (13:44:27.240) :   Name     : Generic PnP Monitor
DBUG (13:44:27.241) :   Adapter  : AMD Radeon HD 7700 Series
DBUG (13:44:27.241) :   Flags    : ACTIVE (0x00000001)
DBUG (13:44:27.242) :   Handle   : 0x0000000000010003
DBUG (13:44:27.252) :   ScrArea  : L=1920, T=8, R=3200, B=1032 (W=1280, H=1024)
DBUG (13:44:27.252) :   WorkArea : L=1920, T=8, R=3200, B=1002 (W=1280, H=994)
DBUG (13:44:27.253) : \\.\DISPLAY2
DBUG (13:44:27.257) :   Name     : AOC 2060W3
DBUG (13:44:27.257) :   Adapter  : AMD Radeon HD 7700 Series
DBUG (13:44:27.259) :   Flags    : ACTIVE PRIMARY PRUNED (0x08000005)
DBUG (13:44:27.259) :   Handle   : 0x0000000000010001
DBUG (13:44:27.259) :   ScrArea  : L=0, T=0, R=1920, B=1080 (W=1920, H=1080)
DBUG (13:44:27.260) :   WorkArea : L=0, T=0, R=1920, B=1042 (W=1920, H=1042)
DBUG (13:44:27.260) : \\.\DISPLAY3
DBUG (13:44:27.265) :   Adapter  : AMD Radeon HD 7700 Series
DBUG (13:44:27.265) :   Flags    : (0x00000000)
DBUG (13:44:27.266) : \\.\DISPLAY4
DBUG (13:44:27.270) :   Adapter  : AMD Radeon HD 7700 Series
DBUG (13:44:27.270) :   Flags    : (0x00000000)
DBUG (13:44:27.271) : \\.\DISPLAY5
DBUG (13:44:27.275) :   Adapter  : AMD Radeon HD 7700 Series
DBUG (13:44:27.275) :   Flags    : (0x00000000)
DBUG (13:44:27.276) : \\.\DISPLAY6
DBUG (13:44:27.279) :   Adapter  : AMD Radeon HD 7700 Series
DBUG (13:44:27.280) :   Flags    : (0x00000000)
DBUG (13:44:27.280) : ------------------------------
DBUG (13:44:27.281) : * EnumDisplayMonitors API
DBUG (13:44:27.281) : \\.\DISPLAY1
DBUG (13:44:27.282) :   Flags    : (0x00000000)
DBUG (13:44:27.283) :   Handle   : 0x0000000000010003
DBUG (13:44:27.284) :   ScrArea  : L=1920, T=8, R=3200, B=1032 (W=1280, H=1024)
DBUG (13:44:27.285) :   WorkArea : L=1920, T=8, R=3200, B=1002 (W=1280, H=994)
DBUG (13:44:27.286) : \\.\DISPLAY2
DBUG (13:44:27.286) :   Flags    : PRIMARY (0x00000001)
DBUG (13:44:27.287) :   Handle   : 0x0000000000010001
DBUG (13:44:27.288) :   ScrArea  : L=0, T=0, R=1920, B=1080 (W=1920, H=1080)
DBUG (13:44:27.289) :   WorkArea : L=0, T=0, R=1920, B=1042 (W=1920, H=1042)
DBUG (13:44:27.291) : ------------------------------
DBUG (13:44:27.292) : * METHOD: EnumDisplayDevices + EnumDisplaySettings Mode
DBUG (13:44:27.293) : * MONITORS: Count=6, Primary=@2
DBUG (13:44:27.294) : @0: Virtual screen
DBUG (13:44:27.294) :   L=0, T=0, R=3200, B=1080 (W=3200, H=1080)
DBUG (13:44:27.295) : @1: \\.\DISPLAY1 (active), MonitorName: Generic PnP Monitor
DBUG (13:44:27.296) :   L=1920, T=8, R=3200, B=1032 (W=1280, H=1024)
DBUG (13:44:27.296) : @2: \\.\DISPLAY2 (active), MonitorName: AOC 2060W3
DBUG (13:44:27.296) :   L=0, T=0, R=1920, B=1080 (W=1920, H=1080)
DBUG (13:44:27.297) : @3: \\.\DISPLAY3 (inactive), MonitorName: 
DBUG (13:44:27.297) : @4: \\.\DISPLAY4 (inactive), MonitorName: 
DBUG (13:44:27.298) : @5: \\.\DISPLAY5 (inactive), MonitorName: 
DBUG (13:44:27.298) : @6: \\.\DISPLAY6 (inactive), MonitorName: 
DBUG (13:44:27.298) : ------------------------------
DBUG (13:44:27.300) : ------------------------------
DBUG (13:44:27.300) : * NETWORK-INTERFACE: Count=36
DBUG (13:44:27.301) : 1: WAN Miniport (IP)-WFP Native MAC Layer LightWeight Filter-0000
DBUG (13:44:27.301) :   Alias: Local Area Connection* 10-WFP Native MAC Layer LightWeight Filter-0000
DBUG (13:44:27.301) :   Type=Ethernet(6), Hardware=No, Filter=Yes
DBUG (13:44:27.302) : 2: WAN Miniport (IP)-QoS Packet Scheduler-0000
DBUG (13:44:27.302) :   Alias: Local Area Connection* 10-QoS Packet Scheduler-0000
DBUG (13:44:27.302) :   Type=Ethernet(6), Hardware=No, Filter=Yes
DBUG (13:44:27.303) : 3: WAN Miniport (IPv6)-WFP Native MAC Layer LightWeight Filter-0000
DBUG (13:44:27.303) :   Alias: Local Area Connection* 11-WFP Native MAC Layer LightWeight Filter-0000
DBUG (13:44:27.304) :   Type=Ethernet(6), Hardware=No, Filter=Yes
DBUG (13:44:27.304) : 4: WAN Miniport (IPv6)-QoS Packet Scheduler-0000
DBUG (13:44:27.305) :   Alias: Local Area Connection* 11-QoS Packet Scheduler-0000
DBUG (13:44:27.305) :   Type=Ethernet(6), Hardware=No, Filter=Yes
DBUG (13:44:27.307) : 5: WAN Miniport (Network Monitor)-WFP Native MAC Layer LightWeight Filter-0000
DBUG (13:44:27.307) :   Alias: Local Area Connection* 12-WFP Native MAC Layer LightWeight Filter-0000
DBUG (13:44:27.308) :   Type=Ethernet(6), Hardware=No, Filter=Yes
DBUG (13:44:27.308) : 6: WAN Miniport (Network Monitor)-QoS Packet Scheduler-0000
DBUG (13:44:27.308) :   Alias: Local Area Connection* 12-QoS Packet Scheduler-0000
DBUG (13:44:27.309) :   Type=Ethernet(6), Hardware=No, Filter=Yes
DBUG (13:44:27.309) : 7: Microsoft Kernel Debug Network Adapter
DBUG (13:44:27.310) :   Alias: [mrBSA][₤õćăℓ Ăгзâ Ĉθňйё¢τιόи* !!! !!] 1
DBUG (13:44:27.310) :   Type=Ethernet(6), Hardware=No, Filter=No
DBUG (13:44:27.310) : 8: Microsoft Hyper-V Network Adapter
DBUG (13:44:27.311) :   Alias: [g7JoS][Ēτђέѓηεť !]
DBUG (13:44:27.311) :   Type=Ethernet(6), Hardware=Yes, Filter=No
DBUG (13:44:27.312) : 9: Microsoft Hyper-V Network Adapter
DBUG (13:44:27.312) :   Alias: [g7JoS][Ěτђėгŋ℮ŧ !]
DBUG (13:44:27.312) :   Type=Ethernet(6), Hardware=Yes, Filter=No
DBUG (13:44:27.313) : 10: Microsoft Kernel Debug Network Adapter #2
DBUG (13:44:27.313) :   Alias: Local Area Connection* 1
DBUG (13:44:27.314) :   Type=Ethernet(6), Hardware=No, Filter=No
DBUG (13:44:27.314) : 11: WAN Miniport (IP)
DBUG (13:44:27.314) :   Alias: Local Area Connection* 10
DBUG (13:44:27.315) :   Type=Ethernet(6), Hardware=No, Filter=No
DBUG (13:44:27.315) : 12: WAN Miniport (IPv6)
DBUG (13:44:27.316) :   Alias: Local Area Connection* 11
DBUG (13:44:27.316) :   Type=Ethernet(6), Hardware=No, Filter=No
DBUG (13:44:27.317) : 13: WAN Miniport (Network Monitor)
DBUG (13:44:27.317) :   Alias: Local Area Connection* 12
DBUG (13:44:27.317) :   Type=Ethernet(6), Hardware=No, Filter=No
DBUG (13:44:27.319) : 14: WAN Miniport (PPPOE)
DBUG (13:44:27.319) :   Alias: Local Area Connection* 9
DBUG (13:44:27.319) :   Type=PPP(23), Hardware=No, Filter=No
DBUG (13:44:27.320) : 15: Software Loopback Interface 1
DBUG (13:44:27.320) :   Alias: Loopback Pseudo-Interface 1
DBUG (13:44:27.321) :   Type=Loopback(24), Hardware=No, Filter=No
DBUG (13:44:27.321) : 16: Qualcomm Atheros AR938x Wireless Network Adapter-WFP Native MAC Layer LightWeight Filter-0000
DBUG (13:44:27.322) :   Alias: Wi-Fi-WFP Native MAC Layer LightWeight Filter-0000
DBUG (13:44:27.322) :   Type=IEEE802.11(71), Hardware=No, Filter=Yes
DBUG (13:44:27.323) : 17: Qualcomm Atheros AR938x Wireless Network Adapter-Virtual WiFi Filter Driver-0000
DBUG (13:44:27.323) :   Alias: Wi-Fi-Virtual WiFi Filter Driver-0000
DBUG (13:44:27.324) :   Type=IEEE802.11(71), Hardware=No, Filter=Yes
DBUG (13:44:27.324) : 18: Qualcomm Atheros AR938x Wireless Network Adapter-Native WiFi Filter Driver-0000
DBUG (13:44:27.325) :   Alias: Wi-Fi-Native WiFi Filter Driver-0000
DBUG (13:44:27.325) :   Type=IEEE802.11(71), Hardware=No, Filter=Yes
DBUG (13:44:27.325) : 19: Qualcomm Atheros AR938x Wireless Network Adapter-QoS Packet Scheduler-0000
DBUG (13:44:27.326) :   Alias: Wi-Fi-QoS Packet Scheduler-0000
DBUG (13:44:27.326) :   Type=IEEE802.11(71), Hardware=No, Filter=Yes
DBUG (13:44:27.327) : 20: Qualcomm Atheros AR938x Wireless Network Adapter-WFP 802.3 MAC Layer LightWeight Filter-0000
DBUG (13:44:27.327) :   Alias: Wi-Fi-WFP 802.3 MAC Layer LightWeight Filter-0000
DBUG (13:44:27.327) :   Type=IEEE802.11(71), Hardware=No, Filter=Yes
DBUG (13:44:27.328) : 21: Microsoft Wi-Fi Direct Virtual Adapter-WFP Native MAC Layer LightWeight Filter-0000
DBUG (13:44:27.328) :   Alias: Local Area Connection* 2-WFP Native MAC Layer LightWeight Filter-0000
DBUG (13:44:27.329) :   Type=IEEE802.11(71), Hardware=No, Filter=Yes
DBUG (13:44:27.329) : 22: Microsoft Wi-Fi Direct Virtual Adapter-Native WiFi Filter Driver-0000
DBUG (13:44:27.329) :   Alias: Local Area Connection* 2-Native WiFi Filter Driver-0000
DBUG (13:44:27.330) :   Type=IEEE802.11(71), Hardware=No, Filter=Yes
DBUG (13:44:27.330) : 23: Microsoft Wi-Fi Direct Virtual Adapter-QoS Packet Scheduler-0000
DBUG (13:44:27.331) :   Alias: Local Area Connection* 2-QoS Packet Scheduler-0000
DBUG (13:44:27.331) :   Type=IEEE802.11(71), Hardware=No, Filter=Yes
DBUG (13:44:27.331) : 24: Microsoft Wi-Fi Direct Virtual Adapter-WFP 802.3 MAC Layer LightWeight Filter-0000
DBUG (13:44:27.332) :   Alias: Local Area Connection* 2-WFP 802.3 MAC Layer LightWeight Filter-0000
DBUG (13:44:27.332) :   Type=IEEE802.11(71), Hardware=No, Filter=Yes
DBUG (13:44:27.333) : 25: Qualcomm Atheros AR938x Wireless Network Adapter
DBUG (13:44:27.333) :   Alias: Wi-Fi
DBUG (13:44:27.333) :   Type=IEEE802.11(71), Hardware=Yes, Filter=No
DBUG (13:44:27.334) : 26: Microsoft Wi-Fi Direct Virtual Adapter
DBUG (13:44:27.334) :   Alias: Local Area Connection* 2
DBUG (13:44:27.335) :   Type=IEEE802.11(71), Hardware=No, Filter=No
DBUG (13:44:27.335) : 27: Microsoft Wi-Fi Direct Virtual Adapter #2
DBUG (13:44:27.335) :   Alias: Local Area Connection* 3
DBUG (13:44:27.336) :   Type=IEEE802.11(71), Hardware=No, Filter=No
DBUG (13:44:27.336) : 28: Microsoft Wi-Fi Direct Virtual Adapter #3
DBUG (13:44:27.337) :   Alias: Local Area Connection* 4
DBUG (13:44:27.337) :   Type=IEEE802.11(71), Hardware=No, Filter=No
DBUG (13:44:27.337) : 29: Microsoft ISATAP Adapter Driver
DBUG (13:44:27.338) :   Alias: isatap.{A8E900D0-FD07-4A83-9A7F-699C12B2A1E1}
DBUG (13:44:27.338) :   Type=Tunnel(131), Hardware=No, Filter=No
DBUG (13:44:27.339) : 30: Microsoft Teredo Tunneling Adapter
DBUG (13:44:27.339) :   Alias: Teredo Tunneling Pseudo-Interface
DBUG (13:44:27.340) :   Type=Tunnel(131), Hardware=No, Filter=No
DBUG (13:44:27.340) : 31: Microsoft ISATAP Adapter
DBUG (13:44:27.341) :   Alias: isatap.{A8E900D0-FD07-4A83-9A7F-699C12B2A1E1}
DBUG (13:44:27.341) :   Type=Tunnel(131), Hardware=No, Filter=No
DBUG (13:44:27.341) : 32: Teredo Tunneling Pseudo-Interface
DBUG (13:44:27.342) :   Alias: Teredo Tunneling Pseudo-Interface
DBUG (13:44:27.342) :   Type=Tunnel(131), Hardware=No, Filter=No
DBUG (13:44:27.343) : 33: WAN Miniport (SSTP)
DBUG (13:44:27.343) :   Alias: Local Area Connection* 5
DBUG (13:44:27.343) :   Type=Tunnel(131), Hardware=No, Filter=No
DBUG (13:44:27.344) : 34: WAN Miniport (IKEv2)
DBUG (13:44:27.344) :   Alias: Local Area Connection* 6
DBUG (13:44:27.344) :   Type=Tunnel(131), Hardware=No, Filter=No
DBUG (13:44:27.345) : 35: WAN Miniport (L2TP)
DBUG (13:44:27.345) :   Alias: Local Area Connection* 7
DBUG (13:44:27.346) :   Type=Tunnel(131), Hardware=No, Filter=No
DBUG (13:44:27.346) : 36: WAN Miniport (PPTP)
DBUG (13:44:27.346) :   Alias: Local Area Connection* 8
DBUG (13:44:27.347) :   Type=Tunnel(131), Hardware=No, Filter=No
DBUG (13:44:27.347) : ------------------------------
DBUG (13:44:27.348) : ------------------------------
DBUG (13:44:27.348) : * Font families:
WARN (13:44:27.353) : Adobe Arabic, Adobe Caslon Pro, Adobe Caslon Pro Bold, Adobe Devanagari, Adobe Fan Heiti Std B, Adobe Fangsong Std R, Adobe Garamond Pro, Adobe Garamond Pro Bold, Adobe Gothic Std B, Adobe Hebrew, Adobe Heiti Std R, Adobe Kaiti Std R, Adobe Ming Std L, Adobe Myungjo Std M, Adobe Naskh Medium, Adobe Song Std L, Aller, Aller Display, Aller Light, Anonymous Pro, Arial, Arial Black, Avenir LT 35 Light, Birch Std, Blackoak Std, Brush Script Std, Caladea, Calibri, Calibri Light, Cambria, Cambria Math, Candara, Carlito, Chaparral Pro, Chaparral Pro Light, Charlemagne Std, Comic Sans MS, Consolas, Constantia, Cooper Std Black, Corbel, Courier New, DejaVu Sans, DejaVu Sans Condensed, DejaVu Sans Light, DejaVu Sans Mono, DejaVu Serif, DejaVu Serif Condensed, Ebrima, Fira Mono, Fira Sans, Fira Sans Light, Fira Sans Medium, Franklin Gothic Medium, Gabriola, Gadugi, Gentium Basic, Gentium Book Basic, Georgia, Giddyup Std, Hobo Std, Impact, Javanese Text, Kozuka Gothic Pr6N B, Kozuka Gothic Pr6N EL, Kozuka Gothic Pr6N H, Kozuka Gothic Pr6N L, Kozuka Gothic Pr6N M, Kozuka Gothic Pr6N R, Kozuka Gothic Pro B, Kozuka Gothic Pro EL, Kozuka Gothic Pro H, Kozuka Gothic Pro L, Kozuka Gothic Pro M, Kozuka Gothic Pro R, Kozuka Mincho Pr6N B, Kozuka Mincho Pr6N EL, Kozuka Mincho Pr6N H, Kozuka Mincho Pr6N L, Kozuka Mincho Pr6N M, Kozuka Mincho Pr6N R, Kozuka Mincho Pro B, Kozuka Mincho Pro EL, Kozuka Mincho Pro H, Kozuka Mincho Pro L, Kozuka Mincho Pro M, Kozuka Mincho Pro R, Leelawadee UI, Leelawadee UI Semilight, Letter Gothic Std, Liberation Mono, Liberation Sans, Liberation Sans Narrow, Liberation Serif, Linux Biolinum G, Linux Libertine Display G, Linux Libertine G, Lithos Pro Regular, Lucida Console, Lucida Sans Unicode, Malgun Gothic, Malgun Gothic Semilight, Marlett, Mesquite Std, Microsoft Himalaya, Microsoft JhengHei, Microsoft JhengHei Light, Microsoft JhengHei UI, Microsoft JhengHei UI Light, Microsoft New Tai Lue, Microsoft PhagsPa, Microsoft Sans Serif, Microsoft Tai Le, Microsoft YaHei, Microsoft YaHei Light, Microsoft YaHei UI, Microsoft YaHei UI Light, Microsoft Yi Baiti, MingLiU-ExtB, MingLiU_HKSCS-ExtB, Minion Pro, Minion Pro Cond, Minion Pro Med, Minion Pro SmBd, Mongolian Baiti, MV Boli, Myanmar Text, Myriad Arabic, Myriad Hebrew, Myriad Pro, Myriad Pro Cond, Myriad Pro Light, Nirmala UI, Nirmala UI Semilight, NSimSun, Nueva Std, Nueva Std Cond, OCR A Std, Open Sans, OpenSymbol, Orator Std, Oswald, Palatino Linotype, PMingLiU-ExtB, Poplar Std, Prestige Elite Std, PT Serif, Rosewood Std Regular, Segoe MDL2 Assets, Segoe Print, Segoe Script, Segoe UI, Segoe UI Black, Segoe UI Emoji, Segoe UI Historic, Segoe UI Light, Segoe UI Semibold, Segoe UI Semilight, Segoe UI Symbol, SimSun, SimSun-ExtB, Sitka Banner, Sitka Display, Sitka Heading, Sitka Small, Sitka Subheading, Sitka Text, Source Code Pro, Source Sans Pro, Source Sans Pro Black, Source Sans Pro ExtraLight, Source Sans Pro Light, Source Sans Pro Semibold, Stencil Std, SWGamekeys MT, Sylfaen, Symbol, Tahoma, TeamViewer11, Tekton Pro, Tekton Pro Cond, Tekton Pro Ext, Times New Roman, Trajan Pro, Trebuchet MS, Verdana, Webdings, Wingdings, Yu Gothic, Yu Gothic Light, Yu Gothic Medium, Yu Gothic UI, Yu Gothic UI Light, Yu Gothic UI Semibold, Yu Gothic UI Semilight, 
DBUG (13:44:27.353) : ------------------------------
DBUG (13:44:27.413) : Reading file: C:\Users\Jeffrey\AppData\Roaming\Rainmeter\Rainmeter.ini
NOTE (13:44:27.431) : ConfigEditor: C:\Program Files (x86)\Notepad++\Notepad++.exe
DBUG (13:44:27.432) : Reading file: C:\Users\Jeffrey\AppData\Roaming\Rainmeter\Rainmeter.stats
NOTE (13:44:27.433) NetworkBoot\NetworkBoot.ini: Refreshing skin
DBUG (13:44:27.434) : Reading file: C:\Users\Jeffrey\AppData\Roaming\Rainmeter\Rainmeter.ini
DBUG (13:44:27.434) NetworkBoot\NetworkBoot.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\NetworkBoot\NetworkBoot.ini
NOTE (13:44:27.447) JSMeter\Dock\Dock.ini: Refreshing skin
DBUG (13:44:27.448) : Reading file: C:\Users\Jeffrey\AppData\Roaming\Rainmeter\Rainmeter.ini
DBUG (13:44:27.449) JSMeter\Dock\Dock.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\JSMeter\Dock\Dock.ini
DBUG (13:44:27.449) JSMeter\Dock\Dock.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\JSMeter\@Resources\GeneralVariables.inc
DBUG (13:44:27.450) JSMeter\Dock\Dock.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\JSMeter\@Resources\Dock.inc
NOTE (13:44:27.471) JSMeter\ClockWeather\ClockWeather.ini: Refreshing skin
DBUG (13:44:27.472) : Reading file: C:\Users\Jeffrey\AppData\Roaming\Rainmeter\Rainmeter.ini
DBUG (13:44:27.473) JSMeter\ClockWeather\ClockWeather.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\JSMeter\ClockWeather\ClockWeather.ini
DBUG (13:44:27.473) JSMeter\ClockWeather\ClockWeather.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\JSMeter\@Resources\GeneralVariables.inc
DBUG (13:44:27.474) JSMeter\ClockWeather\ClockWeather.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\JSMeter\@Resources\ClockWeatherSpeech.inc
DBUG (13:44:27.475) JSMeter\ClockWeather\ClockWeather.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\JSMeter\@Resources\WXDataWeatherVars.inc
DBUG (13:44:27.476) JSMeter\ClockWeather\ClockWeather.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\JSMeter\@Resources\WXDataWeatherRegExp.inc
DBUG (13:44:27.484) : ProxyServer="/auto" (type=PRECONFIG, handle=0x0000000000CC0004)
DBUG (13:44:27.486) JSMeter\ClockWeather\ClockWeather.ini - [MeasureAll]: Fetching: http://wxdata.weather.com/wxdata/weather/local/USVA0944?cc=*&unit=f&dayf=6
NOTE (13:44:27.493) JSMeter\System\System.ini: Refreshing skin
DBUG (13:44:27.494) : Reading file: C:\Users\Jeffrey\AppData\Roaming\Rainmeter\Rainmeter.ini
DBUG (13:44:27.517) JSMeter\System\System.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\JSMeter\System\System.ini (Temp: C:\Users\Jeffrey\AppData\Local\Temp\cfgEAB7.tmp)
DBUG (13:44:27.519) JSMeter\System\System.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\JSMeter\@Resources\GeneralVariables.inc
DBUG (13:44:27.519) JSMeter\System\System.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\JSMeter\@Resources\System.inc
NOTE (13:44:27.726) JSMeter\Network\Network.ini: Refreshing skin
DBUG (13:44:27.727) : Reading file: C:\Users\Jeffrey\AppData\Roaming\Rainmeter\Rainmeter.ini
DBUG (13:44:27.727) JSMeter\Network\Network.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\JSMeter\Network\Network.ini
DBUG (13:44:27.728) JSMeter\Network\Network.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\JSMeter\@Resources\GeneralVariables.inc
DBUG (13:44:27.729) JSMeter\Network\Network.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\JSMeter\@Resources\Network.inc
DBUG (13:44:27.770) JSMeter\Network\Network.ini - [MeasureNetIn]: Using network interface: Number=(25), Name="Qualcomm Atheros AR938x Wireless Network Adapter"
DBUG (13:44:27.770) JSMeter\Network\Network.ini - [MeasureNetOut]: Using network interface: Number=(25), Name="Qualcomm Atheros AR938x Wireless Network Adapter"
DBUG (13:44:27.796) JSMeter\Network\Network.ini - [MeasureIPWeb]: Fetching: http://icanhazip.com/
NOTE (13:44:27.813) NetworkBoot\NetworkBoot.ini: Refreshing skin
DBUG (13:44:27.814) : Reading file: C:\Users\Jeffrey\AppData\Roaming\Rainmeter\Rainmeter.ini
DBUG (13:44:27.814) NetworkBoot\NetworkBoot.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\NetworkBoot\NetworkBoot.ini
NOTE (13:44:27.830) JSMeter\HWInfo\HWInfo.ini: Refreshing skin
DBUG (13:44:27.831) : Reading file: C:\Users\Jeffrey\AppData\Roaming\Rainmeter\Rainmeter.ini
DBUG (13:44:27.832) JSMeter\HWInfo\HWInfo.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\JSMeter\HWInfo\HWInfo.ini
DBUG (13:44:27.833) JSMeter\HWInfo\HWInfo.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\JSMeter\@Resources\GeneralVariables.inc
DBUG (13:44:27.833) JSMeter\HWInfo\HWInfo.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\JSMeter\@Resources\HWInfo.inc
NOTE (13:44:27.850) JSMeter\WXDataWeather\WXDataWeather.ini: Refreshing skin
DBUG (13:44:27.851) : Reading file: C:\Users\Jeffrey\AppData\Roaming\Rainmeter\Rainmeter.ini
DBUG (13:44:27.851) JSMeter\WXDataWeather\WXDataWeather.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\JSMeter\WXDataWeather\WXDataWeather.ini
DBUG (13:44:27.852) JSMeter\WXDataWeather\WXDataWeather.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\JSMeter\@Resources\GeneralVariables.inc
DBUG (13:44:27.853) JSMeter\WXDataWeather\WXDataWeather.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\JSMeter\@Resources\WXDataWeatherVars.inc
DBUG (13:44:27.854) JSMeter\WXDataWeather\WXDataWeather.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\JSMeter\@Resources\WXDataWeatherRegExp.inc
DBUG (13:44:27.867) JSMeter\WXDataWeather\WXDataWeather.ini - [WeatherParent]: Fetching: http://wxdata.weather.com/wxdata/weather/local/USVA0944?cc=*&unit=f&dayf=6
NOTE (13:44:27.876) JSMeter\GMail\GMail.ini: Refreshing skin
DBUG (13:44:27.877) : Reading file: C:\Users\Jeffrey\AppData\Roaming\Rainmeter\Rainmeter.ini
DBUG (13:44:27.878) JSMeter\GMail\GMail.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\JSMeter\GMail\GMail.ini
DBUG (13:44:27.878) JSMeter\GMail\GMail.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\JSMeter\@Resources\GeneralVariables.inc
DBUG (13:44:27.879) JSMeter\GMail\GMail.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\JSMeter\@Resources\GMail.inc
DBUG (13:44:27.900) JSMeter\GMail\GMail.ini - [MeasureMail1]: Fetching: https://gmail.google.com/gmail/feed/atom
DBUG (13:44:27.900) JSMeter\Recycle\Recycle.ini: Fetching: https://mail.google.com/a/rainmeter.net/feed/atom
NOTE (13:44:27.906) JSMeter\Recycle\Recycle.ini: Refreshing skin
DBUG (13:44:27.907) : Reading file: C:\Users\Jeffrey\AppData\Roaming\Rainmeter\Rainmeter.ini
DBUG (13:44:27.908) JSMeter\Recycle\Recycle.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\JSMeter\Recycle\Recycle.ini
DBUG (13:44:27.909) JSMeter\Recycle\Recycle.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\JSMeter\@Resources\GeneralVariables.inc
DBUG (13:44:27.909) JSMeter\Recycle\Recycle.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\JSMeter\@Resources\Recycle.inc
NOTE (13:44:27.921) TextTime\TextTime.ini: Refreshing skin
DBUG (13:44:27.921) : Reading file: C:\Users\Jeffrey\AppData\Roaming\Rainmeter\Rainmeter.ini
DBUG (13:44:27.922) TextTime\TextTime.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\TextTime\TextTime.ini
NOTE (13:44:27.929) DriveLights\DriveLights.ini: Refreshing skin
DBUG (13:44:27.930) : Reading file: C:\Users\Jeffrey\AppData\Roaming\Rainmeter\Rainmeter.ini
DBUG (13:44:27.931) DriveLights\DriveLights.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\DriveLights\DriveLights.ini
NOTE (13:44:27.943) JSLuaTorrent\LuaTorrent.ini: Refreshing skin
DBUG (13:44:27.943) : Reading file: C:\Users\Jeffrey\AppData\Roaming\Rainmeter\Rainmeter.ini
DBUG (13:44:27.944) JSLuaTorrent\LuaTorrent.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\JSLuaTorrent\LuaTorrent.ini
NOTE (13:44:27.965) LuaRainRSS\LuaRainRSS.ini: Refreshing skin
DBUG (13:44:27.965) : Reading file: C:\Users\Jeffrey\AppData\Roaming\Rainmeter\Rainmeter.ini
DBUG (13:44:27.966) LuaRainRSS\LuaRainRSS.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\LuaRainRSS\LuaRainRSS.ini
DBUG (13:44:27.967) LuaRainRSS\LuaRainRSS.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\LuaRainRSS\@Resources\Settings.inc
DBUG (13:44:27.976) LuaRainRSS\LuaRainRSS.ini - [MeasureRainmeterRSS]: Fetching: https://forum.rainmeter.net/feed.php?auth=http
NOTE (13:44:27.983) BreakingNews\BreakingNews.ini: Refreshing skin
DBUG (13:44:27.984) : Reading file: C:\Users\Jeffrey\AppData\Roaming\Rainmeter\Rainmeter.ini
DBUG (13:44:27.984) BreakingNews\BreakingNews.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\BreakingNews\BreakingNews.ini
DBUG (13:44:27.994) BreakingNews\BreakingNews.ini - [MeasureBreakingNews]: Fetching: http://www.breakingnews.com/feeds/rss/
NOTE (13:44:28.007) SetWallpaper\SetWallpaperIcon.ini: Refreshing skin
DBUG (13:44:28.007) : Reading file: C:\Users\Jeffrey\AppData\Roaming\Rainmeter\Rainmeter.ini
DBUG (13:44:28.008) SetWallpaper\SetWallpaperIcon.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\SetWallpaper\SetWallpaperIcon.ini
NOTE (13:44:28.016) RainGit\RainGit.ini: Refreshing skin
DBUG (13:44:28.017) : Reading file: C:\Users\Jeffrey\AppData\Roaming\Rainmeter\Rainmeter.ini
DBUG (13:44:28.019) RainGit\RainGit.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\RainGit\RainGit.ini
DBUG (13:44:28.026) RainGit\RainGit.ini - [MeasureCommits]: Fetching: https://github.com/rainmeter/rainmeter
NOTE (13:44:28.033) SearchEverything\SearchEverything.ini: Refreshing skin
DBUG (13:44:28.033) : Reading file: C:\Users\Jeffrey\AppData\Roaming\Rainmeter\Rainmeter.ini
DBUG (13:44:28.034) SearchEverything\SearchEverything.ini: Reading file: C:\Users\Jeffrey\Documents\Rainmeter\Skins\SearchEverything\SearchEverything.ini
DBUG (13:44:29.076) RainGit\RainGit.ini - [MeasureGitHub]: Fetching: https://api.github.com/repos/rainmeter/rainmeter/commits
As far as OnRefreshActions and the like, I think you will need to use the !Log bang for those.
User avatar
Active Colors
Moderator
Posts: 1251
Joined: February 16th, 2012, 3:32 am
Location: Berlin, Germany

Re: [Suggestion] Advanced Rainmeter logging mode

Post by Active Colors »

Those all look good, but my primary intention was to have comfortable tool to track all those things. Well, it is not that vital to have it. Just a small suggestion.
User avatar
jsmorley
Developer
Posts: 22629
Joined: April 19th, 2009, 11:02 pm
Location: Fort Hunt, Virginia, USA

Re: [Suggestion] Advanced Rainmeter logging mode

Post by jsmorley »

I understand. I just really think the cost is not going to be worth the benefit for this in a broad way.
User avatar
jsmorley
Developer
Posts: 22629
Joined: April 19th, 2009, 11:02 pm
Location: Fort Hunt, Virginia, USA

Re: [Suggestion] Advanced Rainmeter logging mode

Post by jsmorley »

By the way, just for information's sake, the way configs are loaded from Rainmeter.ini is:

First, by order of any LoadOrder setting on the config. Lower LoadOrder loads before higher LoadOrder. So LoadOrder=1 will load before LoadOrder=2. LoadOrder=-1 will load before LoadOrder=0. The default is LoadOrder=0, so to have a skin load before others, you can generally just set LoadOrder=-1 on that skin in Manage.

Second, by the order they are in Rainmeter.ini, in order from top to bottom in the file.

So by default, assuming you have not set any specific LoadOrder values on any configs, the order is simply the order they are in Rainmeter.ini.
User avatar
Active Colors
Moderator
Posts: 1251
Joined: February 16th, 2012, 3:32 am
Location: Berlin, Germany

Re: [Suggestion] Advanced Rainmeter logging mode

Post by Active Colors »

Thanks for the all explanations. I guess you are right about the outcome. Yet, the developer sees most of the game.