如何以自定义漂亮的日志格式在每个新行上附加制表符?

Posted

技术标签:

【中文标题】如何以自定义漂亮的日志格式在每个新行上附加制表符?【英文标题】:How to append tab on every new line in a custom pretty log format? 【发布时间】:2016-10-16 22:03:35 【问题描述】:

我一直在研究可以对 Git 日志进行哪些自定义,我想我已经确定了适合我的日志。但是,我不确定如何标记整个 git 消息。我可以在第一行做,我假设整个 git 消息是一个长字符串。

另外,是否可以像 Git log default 那样输出整个 git commit 消息?也就是说,每行消息 1 行。

默认 Git 日志:

commit 3246e9dfcf80d8edada9a559684b528658b8ccf5
Author: Reid
Date:   Thu Jun 9 16:30:35 2016 -0400

    Refactored Loading Indicators

commit 219a67a34036b40d18091ea3a1df6417c5feb245
Author: Reid
Date:   Fri Jun 3 14:50:59 2016 -0400

    Filter out Promotions < 0
    Submission of Promo Code working with error messages
    Refactored Loading Indicators
    Limit 1 promo code per order via Mini Cart
    Cart stays open if they change quantity of item
    Migrated Drawer Animation to an Extension
    Hooked into hideAllNavigation()
    Dynamically Set Items Container Height
    Implement the Mini Cart Experience Flag

我的自定义 git 日志格式:

3246e9d 2016-06-09 [Reid]

        Refactored Loading Indicators

219a67a 2016-06-03 [Reid]

        Filter out Promotions < 0 Submission of Promo Code working with error messages Refactored Loading Indicators Limit 1 promo code per order via Mini Cart Cart stays open if they change quantity of item Migrated Drawer Animation to an Extension Hooked into hideAllNavigation() Dynamically Set Items Container Height Implement the Mini Cart Experience Flag

我在 git config 中的自定义 git log 别名:

[alias]
    logg = log --pretty=format:'%C(197)%h%Creset %C(039)%ad%Creset %C(177)[%an <%ae>]%Creset%n%n\t%s%n' --date=short

【问题讨论】:

为什么不插入多个空格而不是 \t? 角色对我来说无关紧要,我说的是制表符,但只是有一定的空间,但它完成了。我只是想把句子分成几行。 【参考方案1】:

重现git log 的默认行为的最准确方法是使用%w 换行= 0,缩进而不换行(根据git shortlog)和%B 获取原始提交文本,即使它不符合 Git 理想的“主题行 LF 正文”标准。

%w(0,4,4)%B

这是一个完整的“中等”英文日志格式:

%C(yellow)commit%C(auto) %H%d%nAuthor: %aN <%aE>%nDate:   %ad%n%n%w(0,4,4)%B

样本输出:

commit f7c28ecb35b64970f1af8f05fd644fb4bf663e2a (HEAD -> main, origin/main)
Author: Joel Spolsky
Date:   Wed Oct 08 19:45:20 2003 -0500

    The Absolute Minimum Every Software Developer 
    Absolutely, Positively Must Know About Unicode
    and Character Sets (No Excuses!)

    IT’S NOT THAT HARD.

(注意:此格式省略了合并父级,没有具体的格式代码。)

【讨论】:

【参考方案2】:

我找到了,只需附加 ex。 %w(80,9,9)前面选择要格式化的文本。宽度是第一个#,第二个是第一行缩进,第三个是隔行缩进。

帮助描述解决方案的链接。

https://git-scm.com/docs/git-shortlog

【讨论】:

【参考方案3】:

根据manpage of git-log,格式字符之一是:

%x00:从十六进制代码打印一个字节

由于x09是\t的十六进制代码,你可以插入%x09,它将代表一个制表符。

【讨论】:

现在,如果我想将那长行分成​​单独的行,例如默认的 git log,该怎么办? 啊,我忘了这是问题的一部分。我已经查看了手册页,但我不知道该怎么做。我认为这与%w 有关。如果其他人知道,请告诉。 我找到了,只需将 %w(80,9,9) 附加到要格式化的文本选择的前面。宽度是第一个#,第二个是第一行缩进,第三个是每隔一行的缩进。 git-scm.com/docs/git-shortlog

以上是关于如何以自定义漂亮的日志格式在每个新行上附加制表符?的主要内容,如果未能解决你的问题,请参考以下文章

将新行追加到 cronjob 的输出日志

如何以自定义格式加载带有时间戳的 CSV?

以自定义形式使用 Django 时间/日期小部件

如何强制Python XlsxWriter以自定义格式写入单元格

Eclipse将每个参数放在新行上,如何停止这种格式化

如何以自定义 json 格式返回数据?