Thank you for the detailed answer.

I think I have sorted it all out.

My use case is an i3 session started with some session manager like gdm or kdm (or any other *dm).
In that setup, the users have little access to the arguments passed to i3.

Let's assume the system uses an i3 build from git@master.
It should be sufficient to start i3 as "i3 --shmlog-size=25000000 -V -d all" to get extended logs including the starting phase, and suitable for bug reports.

If users are annoyed by the memory usage, they can add 'exec --no-startup-id i3-msg shmlog no' to their config.

This way, I enable users to
1) access complete logs suitable for debug without needing root access
2) disable i3 logging if they do not want it

If it is not an up-to-date git build, they can still use the logs it for their own debug purposes.

Do you think the idea of always starting i3 with the "--shmlog-size=25000000 -V -d all" parameters makes sense ?

--
Regards,
Layus

On 27/10/15 15:22, Michael Stapelberg wrote:


On Tue, Oct 27, 2015 at 7:01 AM, Guillaume Maudoux (Layus) <layus...@gmail.com> wrote:

    Hello world!

    I am trying to enable debugging in i3, and I am confused by the
    number of different options to do this.

       command line          config option
    -- --------------------  -----------------------------
    1 i3 --shmlog-size=X shmlog on|off|toggle|<size>


Note that “shmlog on|off|toggle|<size>” refers to a command, not a config directive.

    2 i3 -V ?


Errors (ELOG in the code) are always printed to stdout.
Verbose log messages (LOG in the code) are printed to stdout if -V is enabled. Intended for curious users.
Debug log messages (DLOG in the code) are printed if -d is enabled.

    3 i3 -d all             ?
    4  ? debuglog on|off|toggle


3 and 4 are the same setting. The “all” argument to -d is obsolete, but kept for backwards compatibility.

See also https://github.com/i3/i3/issues/1823 for a related discussion.


    So my question are:

    Which one is the recommended way ?


The recommended way is to use an automatically built version from http://i3wm.org/docs/repositories.html (or i3-git if your package manager knows how to build automatically build software from git) because otherwise any of your findings will need to be confirmed again on a more recent version.

These versions automatically enable debug logging to shared memory (they check whether they were built from a git version that is not a release version).

    Does `shmlog on` imply  `debuglog on` ?


No.

    Does `-d all` imply `-V` ?


No.

    What size do you recommend for the shmlog size ?


25MB (arbitrarily chosen, but proven to be enough for all issues we’ve encountered so far).

    May I assume that the config options cannot be used to debug
    issues prior to loading the configuration file (nor issues while
    loading the configuration file) ?


If you specify them as command-line parameters to i3, they will be active before loading the configuration file.

    Which of these options provide enough information for a bug report
    ? Is -V enough ?


Please use -V -d all, as per section 2 of http://i3wm.org/docs/debugging.html


    It seems that shm logging is better in the sense that it does not
    increase a log file size, but not as nice as it locks some memory
    space.


Correct.

    What is the reason behind shm logging, instead of the usual
    logging to file + logrotate ?


It’s easier for us to set aside a chunk of memory than to make sure that every user of i3 knows about having to logrotate a file away. Anecdotally, we’ve had a bunch of users whose hard drive (or RAM, in case of /tmp being on tmpfs) filled up because of an ever-growing i3 logfile.

--
Best regards,
Michael

Reply via email to