I tend to prefer having explicit methods for a case like this.

We can say logger.filter_param("something") instead of logger.filter_params << "something"

Additionally, it reinforces the idea that it's a global list that the whole code base shares so you don't have situations where one developer adds code that sets filter_params = ["a", "b"] and then another has filter_params = ["c"], blowing away the first guys params.

+1 for add/list/clear methods, though maybe we could do attr_reader instead of def filter_params