[REL] rFactor2 Log Analyzer ver. 2. With offline and league Championship Manager

Hi Nibo,

Is it possible to include applied race penalties in the r2la JSONP report output?

At the moment /report/get_report_jsonp?file_name=<xml> exposes most of the useful race-result data, such as positions, gaps, lap counts, fastest laps, qualifying times, and DNF/DNS via time/ret.

However, penalties that are visible in the normal r2la report table do not appear to be included in the JSONP payload. For example, the rendered report can show a driver with a +10s penalty badge, but the corresponding table_raceResults row in JSONP does not seem to include a penalty field.

Would it be possible to add something like this to each affected table_raceResults row?

Code:
{
  "penalty": "+10s",
  "penalty_seconds": 10
}

Or, if multiple penalties can apply:

Code:
"penalties": [
  {
    "label": "+10s",
    "seconds": 10,
    "reason": ""
  }
]

The reason I’m asking is that the JSONP endpoint is much easier and safer to consume externally than parsing the rendered HTML report. If there’s already another JSON/JSONP endpoint that exposes penalty data, please let me know.

Thanks.
 
Hi Nibo, is it possible to use the same RL2A installation for championships on both RF2 and LMU? Do I copy the LMU *.Xml files into the RF2 directory (D:\SteamLibrary\steamapps\common\rFactor 2\UserData\Log\Results) or do I need to create a second directory in the "Log Directories" options (the LMU game is not installed on our RF2 server)?
 
If both rF2 and LMU are on the same machine, then both variants should work. But I'm not sure about adding second dir in options if it is not on the same machine. Then maybe copy xml files into rF2 dir.
 
@Nibo - is there a way to stop ai from recording laps in the Records section?
We have them running to lay rubber on the track but they always keep appearing in our Records section.

Thanks

1781554972854.png
 
AI cars should have <isPlayer>0</isPlayer> in thier <Driver> block in xml result. Human drivers should have <isPlayer>1</isPlayer> in thier <Driver> block. That's how rF/LMU marks them.
r2la will not (should not) show Records for drivers with <isPlayer>0</isPlayer> in DEDI mode. Maybe in your xml AI drivers are marked with <isPlayer>1</isPlayer> for some reason. You can set it to 0 manually in text editor and refresh r2la.
 
Latest offline session log I have (2026_06_15) has tire and fuel data. Maybe you looking at online session log file, then unless it is the server log, you will not see tire and fuel data, it was always like that.
 
Latest offline session log I have (2026_06_15) has tire and fuel data. Maybe you looking at online session log file, then unless it is the server log, you will not see tire and fuel data, it was always like that.

Incorrect. All online sessions from May and prior have both fuel usage and tyre selection/wear. Online race sessions from LMU champ series race and practice sessions. From June, no data at all. I've been using Log Analyzer forever now to review race and practice sessions with this data. It's impossible that it never worked.
 
If there is no tire/fuel data in the logs then I can not do anything, its LMU problem indeed. You can look if there is tire/fuel data in <driver> blocks in xml yourself or you can send latest log example to me, I will look.
I don't race LMU online now (and barely offline), so I can not check how LMU logging works now myself.
 
Hi,

we have since a long time this errors:
ERROR:Rocket.Errors.Thread-4:Traceback (most recent call last):

File "P:\FormelDLM\web2py\web2py\lib\gluon\rocket.py", line 1294, in run
self.run_app(conn)

File "P:\FormelDLM\web2py\web2py\lib\gluon\rocket.py", line 1788, in run_app
self.environ = environ = self.build_environ(sock_file, conn)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "P:\FormelDLM\web2py\web2py\lib\gluon\rocket.py", line 1607, in build_environ
request = self.read_request_line(sock_file)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "P:\FormelDLM\web2py\web2py\lib\gluon\rocket.py", line 1345, in read_request_line
d = sock_file.readline()
^^^^^^^^^^^^^^^^^^^^

File "C:\Program Files\Python311\Lib\socket.py", line 706, in readinto

ConnectionResetError: [WinError 10054] Eine vorhandene Verbindung wurde vom Remotehost geschlossen

ERROR:Rocket.Errors.Thread-3:Traceback (most recent call last):

File "P:\FormelDLM\web2py\web2py\lib\gluon\rocket.py", line 1294, in run
self.run_app(conn)

File "P:\FormelDLM\web2py\web2py\lib\gluon\rocket.py", line 1788, in run_app
self.environ = environ = self.build_environ(sock_file, conn)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "P:\FormelDLM\web2py\web2py\lib\gluon\rocket.py", line 1607, in build_environ
request = self.read_request_line(sock_file)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File "P:\FormelDLM\web2py\web2py\lib\gluon\rocket.py", line 1345, in read_request_line
d = sock_file.readline()
^^^^^^^^^^^^^^^^^^^^

File "C:\Program Files\Python311\Lib\socket.py", line 706, in readinto

ConnectionResetError: [WinError 10054] Eine vorhandene Verbindung wurde vom Remotehost geschlossen

ERROR:Rocket.Errors.Thread-4:Tried to send "500 Server Error" to client but received socket error
ERROR:Rocket.Errors.Thread-3:Tried to send "500 Server Error" to client but received socket error
ERROR:Rocket.Errors.Thread-2:Traceback (most recent call last):

File "P:\FormelDLM\web2py\web2py\lib\gluon\rocket.py", line 1294, in run
self.run_app(conn)

and so on.
But the LogAnalyzer is running fine.
Is it normal?

Thanks for more informations.

Best Regards
ennimann
 
As far as I can see by googling, its some connection error for some requests to web2py built-in rocket server. It looks like its safe to ignore this. You can try to stop r2la server and start it again if you will see some slowdowns or something.
 
Thanks for your work on this, Nibo!

This looks like it's using a fairly old version of web2py. Do you have any plans to update it to use web2py 2.27, 3.x, or the successor py4web?
 
Last edited:
Back
Top