[Ovmsdev] Automatic naming of CAN log files
Michael Balzer
dexter at expeedo.de
Sat Nov 12 16:02:43 HKT 2022
Ludovic,
most of your thoughts were also mine on designing the file logging
scheme, I suggest taking that as a reference & inspiration.
I suggest controlling this through a similar config scheme, introducing
more can config param instances as needed. There's currently only the
queue size:
OVMS# con lis can
can (readable writeable)
log.queuesize: 300
The file logging sync period feature is what you need to not lose a
complete file on crash, it also enables following a file by "vfs tail"
and transferring the file content written so far without stopping the
logger.
Regards,
Michael
Am 09.11.22 um 22:52 schrieb Ludovic LANGE:
>
> Hi,
>
> I'm planning to implement an "automatic naming" of the CAN log files
> for the VFS target. It would also take care of the file name rotation
> according to some criterion (file size, and/or log duration).
>
> I've created an issue to follow it here
> https://github.com/openvehicles/Open-Vehicle-Monitoring-System-3/issues/748
> (and some others also) but let me first share what I have in mind:
>
>
> The use case is the following: I want to setup OVMS as a CAN bus
> datalogger. It should be always-on, always and continuously logging,
> event after a restart.
>
> (For that, my current solution is to use event scripts, cf
> https://github.com/openvehicles/Open-Vehicle-Monitoring-System-3/issues/766
> )
>
> Logging to the same file, in that case, present some challenges:
>
> * file size would grow indefinitely, which could be then make it
> difficult to copy / network send somewhere
> * file would always be opened, which could prevent any action on it
> (if we want to send it somewhere else, or remove it)
> * in case of crash / corruption the whole file could be lost
> * in case of reboot you'd end overwriting the file.
>
> Of course we should change the file name, but it's not easy to do it
> in a script.
>
> It may be possible to do this with Duktape and `|OvmsCommand.Exec|`
> but I fear that we may miss events if we stop / start logging on a
> highly loaded bus.
>
>
> A proposal to solve this would be to add a new mode in
> `canlog_vfs.cpp` that would cater for this automatic naming
> (inspiration for this feature coming from another product).
>
>
> In this mode you don't pass the path as a parameter, but instead a
> `log prefix` that will be used to construct the file path.
>
> Syntax could be something like : `can log start vfs-auto crtd <log
> prefix> [filter1] ... [filterN]` (no filename).
>
> It would automatically generate a log file name, taking into account
> the splits / rotations that can be configured:
>
> * if asked for by configuration - rotate file name (= increment file
> name) after a file size is reached
> * if asked for by configuration - rotate file name (= increment file
> name) after a certain logging duration has been reached
>
>
> Naming would be 'automatic' with something like :
> `/sd/log/<vehicleid>/<#power on>/<log prefix>/<#rotations>.<log
> extension>`
>
> where:
> * `/sd/log/` is arbitrary. Could be coming from configuration if
> wanted (esp. for module without sd card)
> * `<vehicleid>` is there to help to declutter your sdcard (if you
> share it with multiple modules), or to declutter your storage server
> (when
> https://github.com/openvehicles/Open-Vehicle-Monitoring-System-3/issues/749
> has been completed). We may have to make it a valid filename.
> * `<#power on>` is the number of time the module has powered on ; it
> is an always incrementing number expressed as an integer on 8 digits.
> Depending on the configuration, some modules will be always-on ;
> others will stop more frequently - the number will overflow after
> 99.999.999 power on, which will certainly see a change of sd card, so
> no fear of unwanted overwriting of files
> * `<log prefix>` is a way to distinguish between multiple concurrent
> can logs active.
> * `<#rotations>` is a counter of rotations for this file and this
> power on ; it is an integer on 8 digits ; reset to `00000001` at each
> poweroff and that will increment each time there is a file name rotation.
>
> some configuration items cater for the file name rotation:
> * `split_size_mb` : when the file has reached this size, the file is
> closed, the element `<#rotations>` is incremented, and a new file with
> the 'automatic' name is opened.
> * `split_duration_s` : when the file has logged for this duration, the
> file is closed, the element `<#rotations>` is incremented, and a new
> file with the 'automatic' name is opened.
>
>
>
> example of file name: `/sd/log/mycar/00000024/can1-25k/00000005.crtd`
>
>
> (Of course we need a way to either stop logging once the VFS is full,
> or to auto-remove some log files under this path)
>
>
> Let me know if you have any thoughts / concerns about this.
>
>
> Regards,
>
> Ludovic
>
--
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openvehicles.com/pipermail/ovmsdev/attachments/20221112/b5d365f2/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 203 bytes
Desc: OpenPGP digital signature
URL: <http://lists.openvehicles.com/pipermail/ovmsdev/attachments/20221112/b5d365f2/attachment.sig>
More information about the OvmsDev
mailing list