Staff can export staff logs from /admin/logs/staff_action_logs to see the full history, as we only display a subset of logs within the admin UI. Certain logs can have commas included in the details, which break formatting of the CSV.
Can commas be escaped in this output @vinothkannans?
No, the commas are not breaking the CSV file. Maximum number of characters allowed in a single cell of MS Excel sheet is 32,767. If a column exceeded the characters limit then it’s breaking the CSV format. In our case details column having more characters in some post_edit staff actions. If I open the same CSV file in Google Sheets then it renders all the columns correctly.
If needed I’ll limit the maximum number of characters for details column to ~30,000 in the export unconditionally.
30k chars still seems like a lot. Do we need that many characters in a cell? If so, why?
It’s due to giant posts. For example, many of our internal runbooks tend to be quite long. Likely only the post_edit staff action as Vinoth noted would have this many characters.
Also we storing both old and new post raws for post_edit staff actions in discourse/app/services/staff_action_logger.rb at 4383afb769d97bc9724d5448c0583b14c39782d0 · discourse/discourse · GitHub.
We should aggressively truncate this, I don’t see the point of creating such bulk in the database over something so trivial.
Okay, I’ll try to improve this by storing only the edit differences in the raw text.
Я бы хотел закрыть эту задачу. Давайте сделаем простое решение: ограничим ячейки 30 тысячами, а затем закроем. Изменения, связанные с дельтой, — это очень-очень сложная правка.
Возвращаю к обсуждению. Необходимо срочно внедрить какое-либо решение — просмотр экспортированных логов с гигантскими постами, ломающими форматирование, практически невозможен.
Возможно, самое простое решение здесь:
> '"' + 'post "body" ' .gsub('"', '""') + '"'
=> "\"post \"\"body\"\" \""
Я думаю, что это допустимо в CSV и должно работать.