How to remove admin logs

AI-generated summary

The discussion is about removing admin logs in a Discourse forum. The original poster, dangtrungluong, wants to remove or disable staff logs due to database size concerns.

Several users, including vinothkannans, merefield, and Mittineague, advise against deleting the logs, citing potential unforeseen problems and suggesting alternative solutions such as sharding, partitioning, or using a CDN for media files.

yoda_mtfbwu provides a method for deleting the logs using the Rails console, but warns of the potential dangers. They also offer examples of how to limit the deletion to specific time periods or actions.

Overall, the consensus is that deleting admin logs is not a recommended solution and that other approaches should be explored to address database size concerns.

I want to remove admin logs (admin/logs/staff_action_logs) or disable staff logs?
How to?

No. You can’t disable it.

Why would you want to do this?

I think database larger

Could you safely delete using postgres Sql?

thanks yoú

Take a back-up before you start firing off commands though!

There are very few legitimate reasons to do this…what is the reason?

First, @dangtrungluong , congratulations on having a forum that’s so successful that you actually need to worry about the database size.

However, perhaps you should consider sharding / partitioning?
Generating more granular backups?

Simply deleting data is usually a poor idea likely to lead to unforeseen problems. What exactly is the problem you’re having that you’re wanting to solve?

@Mittineague i’m newbie joining to “discourse”

If you are new to using discourse then I do not see what the issue is at the moment and why you feel it will make a massive impact on your database. We have logs going back to 2014 with no impact and I do not believe it takes up a massive amount of space.

It’s not a bad thing to think about things before they become a problem. If anything, I don’t think the database will be a problem as much as heavy weight media files could be. i.e. should you set up a CDN so the requests are served from closest to a visitors location? Do members reallly need to fill up a topic with mega weight files that could slow down page load and consume bandwidth?

hi. thank for all
:slight_smile:

You could do it using the rails console but it’s also dangerous. So if I’m correct it would like

cd /var/discourse
sudo ./launcher enter app
rails c

Now you’re in the console, one option to delete the entire staff action / admin logs is to use this:

However this removes everything which may not be what you wanted. You may want to limit the time period or investigate certain actions.

For example:
UserHistory.where(action: 17, acting_user_id: 5)

This would return all posts deleted by the user who’s id is 5

or

UserHistory.where(action: 17, post_id: 15643)

This would return information about who deleted the post with id 15643

For a list of table fields and actions id’s see this file:

# == Schema Information
#
# Table name: user_histories
#
#  id             :integer          not null, primary key
#  action         :integer          not null
#  acting_user_id :integer
#  target_user_id :integer
#  details        :text
#  created_at     :datetime         not null
#  updated_at     :datetime         not null
#  context        :string
#  ip_address     :string
#  email          :string
#  subject        :text
#  previous_value :text
#  new_value      :text
#  topic_id       :integer
#  admin_only     :boolean          default(FALSE)
#  post_id        :integer
#  custom_type    :string
#  category_id    :integer
#
# Indexes
#
#  index_user_histories_on_acting_user_id_and_action_and_id        (acting_user_id,action,id)
#  index_user_histories_on_action_and_id                           (action,id)
#  index_user_histories_on_category_id                             (category_id)
#  index_user_histories_on_subject_and_id                          (subject,id)
#  index_user_histories_on_target_user_id_and_id                   (target_user_id,id)
#  index_user_histories_on_topic_id_and_target_user_id_and_action  (topic_id,target_user_id,action)
#