Conversation
Log files grow indefinitely because launchd has no built-in rotation. Add a `log setup-rotation` subcommand that prints a newsyslog(8) config snippet using the G (glob) flag to cover all ldcron log files. Users install it once with: ldcron log setup-rotation | sudo tee /etc/newsyslog.d/com.ldcron.conf The config rotates logs at 1 MB, keeps 3 gzip archives, and requires no process signaling (GNB flags). newsyslog already runs hourly via a system launchd job, so no extra scheduling is needed. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Code Review (Google Style)TL;DRログローテーション機能は newsyslog を活用した堅実な設計で、launchd 完全互換の原則にも沿っており、全体的にコード品質を向上させる良い CL です。いくつか改善の余地がある点を以下に記載します。
Details🚨 issue特になし。マージをブロックする致命的な問題は見当たりません。 💡 suggestion1. ログパス構築ロジックの重複(
|
- Extract logDirPath() in paths.go to share path construction with logDir() and log.go, avoiding duplication - Add t.Cleanup to reset cobra command output in log_test.go to prevent test interference - Add inline comment explaining GNB newsyslog flags - Sync README.ja.md with README.md (add "no process signaling" note) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Code Review (Google Style)TL;DRnewsyslog を活用したログローテーション機能は、macOS 標準のツールを活かした堅実な設計であり、launchd 完全互換の原則にも沿っています。全体としてコード品質を向上させる良い CL です。以下にいくつかの改善点を記載します。
Details🚨 issue致命的な問題は見当たりません。マージをブロックする項目はありません。 💡 suggestion1. README 日本語版に "no process signaling" の説明が不足している
一方 2. テストで
|
- Improve B flag comment to clarify rotation-marker suppression - Add mode 644 assertion to log_test.go - Remove x-man-page:// URLs from READMEs (not functional on GitHub) - Sync README.md and README.ja.md: add launchd reopen explanation to English version to match Japanese version Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Code Review (Google Style)TL;DRnewsyslog を活用したログローテーション機能は、macOS 標準ツールを活かした堅実な設計であり、launchd 完全互換の原則にも沿っています。前回2ラウンドの指摘事項(
Details🚨 issue致命的な問題は見当たりません。マージをブロックする項目はありません。 💡 suggestion1. README 英語版と日本語版の段落構成の差異英語版 CLAUDE.md の README 管理規約(「常に同期する」)に照らすと、以下のいずれかに統一するのが望ましいです:
2. テストで出力全体の構造をより堅牢に検証する検討現在のテストは 正規表現でデータ行全体の構造を検証すると、より堅牢になります: // 例: データ行全体の構造を正規表現で検証
dataLineRe := regexp.MustCompile(`(?m)^.+/\*\.log\t644\t3\t1024\t\*\tGNB$`)
if !dataLineRe.MatchString(output) {
t.Errorf("data line format mismatch, got:\n%s", output)
}ただし、現時点のテストでも十分な実用性があるため、これは将来の改善としての提案です。 🔧 nitpick3. newsyslog ヘッダーコメントのタブ整列_, _ = fmt.Fprintf(w, "# logfilename\t\t\t\t\t\tmode\tcount\tsize\twhen\tflags\n")ヘッダーのタブ数(6個)がハードコードされており、 4. カスタムヘルプテキストの
|
Code Review (Google Style)TL;DR軽微な指摘のみ。マージ可能な状態です。 Details🚨 issue特になし。マージをブロックする致命的な問題は見当たりません。 💡 suggestion特になし。 🔧 nitpick1. newsyslog ヘッダーコメントのタブ整列がホームディレクトリの長さに依存する
_, _ = fmt.Fprintf(w, "# logfilename\t\t\t\t\t\tmode\tcount\tsize\twhen\tflags\n")ヘッダーのタブ数がハードコードされているため、ホームディレクトリのパスの長さによっては実際のデータ行と列が揃わない場合があります。 2.
|
Summary
ldcron log setup-rotationsubcommand that prints a newsyslog(8) configuration snippetG(glob) flag to cover all~/Library/Logs/ldcron/*.logfiles with a single entryGNBflags)ldcron log setup-rotation | sudo tee /etc/newsyslog.d/com.ldcron.confTest plan
go test ./...passesgolangci-lint runpasses (no new lint issues)ldcron log setup-rotationand verify output format🤖 Generated with Claude Code