mariadb (mysql) innodb not optimizing SELECT for partitions?
PARTITIONing with fewer than 10 partitions is rarely useful.

Perhaps PARTITION BY RANGE(TO_DAYS(date)) would be better?  Perhaps daily partitions is best for your application.

Is your goal to purge only "level 7 AND old"?  The gets rather messy because  you would be purging only part of a partition, not being able to DROP PARTITION.

On the other hand, maybe this is a valid application for subpartitioning??  That would be exciting (to me) since I have not yet seen a use for subpartitioning.  Beware of the limitations of what you can put in the BY clause.

I think you would have to go with

 PARTITION BY RANGE(date)
     SUBPARTITION BY KEY(level)


And use ALTER TABLE ... TRUNCATE PARTITION ...  This would leave an empty partition behind, but it would be quick.  Check the ramifications of innodb_file_per_table=1.