I believe the rule is being fired because you are logging the simple toString() message from Exception e, rather than the full stack trace. Something like
LOG.error(SampleClass.class.getSimpleName() + ": " + e, e);
would satisfy the rule.
SonarQube has very good examples of compliant/non-compliant code with each rule definition. Expand the name of the rule, either in the issues or in Quality Profiles to see the examples.
You can alter (some aspects) of the default quality profile by creating a profile of your own that inherits from "Sonar Way..." and then change rules. You'll need admin access to your SonarQube to do that, then navigate to Quality Profiles to get started.
For example, our team decided that the particular issue you are looking at should not be Critical, given the number of times it occurs in our legacy code. We create our own profile inheriting from Sonar Way, and it is easy to lower the severity of this rule to Major. We have altered a number of rules, changing thresholds and/or regular expressions to better suit our needs. We haven't seen a need to write new rules, so I can't tell you how to do that, other than suggest checking the docs.